471,310 Members | 1,285 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,310 software developers and data experts.

embed threaded python code, thread won't start right the way

I have a multi thread python code, threads can start immediately if I run on command line, but I can get them started right the way if I call the same code from C/C++.

test code like this:
from threading import Thread
import thread
class testThread(Thread):
def __init__ (self, id):
self.id = id
def run(self):
print " >>thread ", self.id, " started"
j = 0
for i in range(1, 2000):
j = j+1
print " <<< thread ", self.id, " ended"

def run():
t1 = testThread(1);
t2 = testThread(2);
t3 = testThread(3);
print "start t1"
print "start t2"
print "start t3"

If run this from command line, I get result immediately:
start t1
>>thread 1 started
<<< thread 1 ended
start t2
start t3
return from run() call
>> >>thread 2 started
<<< thread 2 ended
>>thread 3 started
<<< thread 3 ended

If I call this py code from c as:
PyRun_SimpleString("import ****\n****.run()\n");
for (j=0; j<3; j++)
for (i=0; i<1000000; i++)
PyRun_SimpleString("print 'kick python'\n");
printf("---------------- before Finalize()\n");
printf("---------------- after Finalize()\n");

When c code is doing busy loop or sleeping, python thread can not run. they can only be executed when Py_Finalize(); is called. out put is like:
start t1
start t2
>>thread 1 started
start t3
return from run() call
kick python
kick python
kick python
---------------- before Finalize()
>>thread 2 started
thread 3 started
<<< thread 3 ended
<<< thread 2 ended
<<< thread 1 ended
---------------- after Finalize()

__________________________________________________ __________________________________
Never miss a thing. Make Yahoo your home page.
Dec 20 '07 #1
0 1368

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Eric S. Johansson | last post: by
reply views Thread by Mustafa Demirhan | last post: by
3 posts views Thread by Giampaolo Rodola' | last post: by
reply views Thread by rosydwin | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.