我有以下代码,已简化:
import concurrent.futures
pool = concurrent.futures.ThreadPoolExecutor(8)
def _exec(x):
return x + x
myfuturelist = pool.map(_exec,[x for x in range(5)])
# How do I wait for my futures to finish?
for result in myfuturelist:
# Is this how it's done?
print(result)
#... stuff that should happen only after myfuturelist is
#completely resolved.
# Documentation says pool.map is asynchronous
有关 ThreadPoolExecutor.map 的文档薄弱。帮助会很棒。
谢谢!
原文由 Dr.Knowitall 发布,翻译遵循 CC BY-SA 4.0 许可协议
Executor.map 将并行运行作业并等待 futures 完成,收集结果并返回生成器。它已经完成了对你的等待。如果设置超时,它将等到超时并在生成器中抛出异常。
要获取期货列表并手动等待,您可以使用:
Executor.submit 将返回一个 未来 的对象,调用
result
未来将明确等待它完成: