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 threading.py source code, it is clear that the return value of Thread.run() 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()
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to