[python]如何取得线程的返回值

Python中提供了一个线程安全的FIFO模块QUEUE,可以用于生产者与消费者之间的消息传递。

线程的返回值可以存放于Queue中,然后供主线程读取。

import sysimport threadingimport Queueq = Queue.Queue()def worker1(x, y):func_name = sys._getframe().f_code.co_nameprint "%s run ..." % func_nameq.put((x + y, func_name))def worker2(x, y):func_name = sys._getframe().f_code.co_nameprint "%s run ...." % func_nameq.put((x - y, func_name))if __name__ == '__main__':result = list()t1 = threading.Thread(target=worker1, name='thread1', args=(10, 5, ))t2 = threading.Thread(target=worker2, name='thread2', args=(20, 1, ))print '-' * 50t1.start()t2.start()t1.join()t2.join()while not q.empty():result.append(q.get())for item in result:if item[1] == worker1.__name__:print "%s 's return value is : %s" % (item[1], item[0])elif item[1] == worker2.__name__:print "%s 's return value is : %s" % (item[1], item[0])

程序运行后的结果如下:

--------------------------------------------------worker1 run ...worker2 run ....worker1 's return value is : 15worker2 's return value is : 19
[python]如何取得线程的返回值

相关文章:

你感兴趣的文章:

标签云: