Join a thread and get the return value of a function

Aahz aahz at
Wed Jan 13 21:03:12 CET 2010

In article <4b33b0ce$1 at>,
Lie Ryan  <lie.1296 at> wrote:
>On 12/25/2009 2:02 AM, mattia wrote:
>> Il Fri, 25 Dec 2009 00:35:55 +1100, Lie Ryan ha scritto:
>>> On 12/25/2009 12:23 AM, mattia wrote:
>>>> Hi all, is there a way in python to get back the value of the function
>>>> passed to a thread once the thread is finished? Something like
>>>> pthread_join() in C?
>>>> Thanks, Mattia
>>> use a Queue to pass the value out?
>> Yes, it can be a solution, but are you indirectly telling me that there
>> is no way then?
>looking at the source code, it is clear that the return 
>value of is ignored, but this is a workaround:
>import threading
>class MyThread(threading.Thread):
>     def join(self):
>         super(MyThread, self).join()
>         return self.result
>class Worker(MyThread):
>     def run(self):
>         total = 0
>         for i in range(random.randrange(10000, 100000)):
>             total += i
>         self.result = total
>import random
>ts = [Worker() for i in range(100)]
>for t in ts:
>     t.start()
>for t in ts:
>     print t.join()

That seems like extra work when you can just do this without subclassing

for t in ts:
     print t.result
Aahz (aahz at           <*>

"If you think it's expensive to hire a professional to do the job, wait
until you hire an amateur."  --Red Adair

More information about the Python-list mailing list