Threading Problem
Alan Kennedy
alanmk at hotmail.com
Wed Dec 22 07:55:46 EST 2004
[Norbert]
> i am experimenting with threads and get puzzling results.
> Consider the following example:
> #--------------------
> import threading, time
>
> def threadfunction():
> ....print "threadfunction: entered"
> ....x = 10
> ....while x < 40:
> ........time.sleep(1) # time unit is seconds
> ........print "threadfunction x=%d" % x
> ........x += 10
>
>
>
> print "start"
> th = threading.Thread(target = threadfunction())
The problem is here ^^
You are *invoking* threadfunction, and passing its return value as the
target, rather than passing the function itself as the target. That's
why threadfunction's output appears in the output stream before the
thread has even started.
Try this instead
#-----------------------------------------------
import threading, time
def threadfunction():
print "threadfunction: entered"
x = 10
while x < 40:
time.sleep(1) # time unit is seconds
print "threadfunction x=%d" % x
x += 10
print "start"
th = threading.Thread(target = threadfunction)
th.start()
print "start completed"
#------------------------------------------------
Which should output the expected
>
start
threadfunction: entered
start completed
threadfunction x=10
threadfunction x=20
threadfunction x=30
regards,
--
alan kennedy
------------------------------------------------------
email alan: http://xhaus.com/contact/alan
More information about the Python-list
mailing list