下面的函数foo
返回一个字符串'foo'
。如何获取从线程目标返回的值'foo'
?
from threading import Thread
def foo(bar):
print('hello {}'.format(bar))
return 'foo'
thread = Thread(target=foo, args=('world!',))
thread.start()
return_value = thread.join()
上面显示的“一个明显的方法”不起作用:thread.join()
返回了None
。
Tags:
FWIW,
multiprocessing
模块使用Pool
类有一个很好的接口。如果您想坚持使用线程而不是进程,那么可以使用multiprocessing.pool.ThreadPool
类作为替换。我看到的一种方法是将可变对象(如列表或字典)以及某种索引或其他标识符传递给线程的构造函数。然后,线程可以将其结果存储在该对象的专用槽中。例如:
如果您真的希望
join()
返回被调用函数的返回值,可以使用Thread
子类完成此操作,如下所示:由于某些名称混乱,它变得有点毛茸茸,并且它访问特定于
Thread
实现的“私有”数据结构。。。但它起作用了。Python3号
在Python 3.2+中,stdlib^{} 模块为
threading
提供了一个更高级别的API,包括将返回值或异常从工作线程传回主线程:相关问题 更多 >
编程相关推荐