我最近在处理concurrent.futures,我在一个执行器中提交了几个函数,我想知道哪个未来会先回来。
with concurrent.futures.ThreadPoolExecutor(max_workers=workers) as executor:
future_action = executor.submit(func_action, data)
future_monitor = executor.submit(func_monitor)
现在是主要部分,我想知道,当future_monitor结束时,我会终止所有其他行动期货。
我在文档中找到了以下内容(https://docs.python.org/dev/library/concurrent.futures.html#concurrent.futures.as_completed):
concurrent.futures.wait(fs, timeout=None, return_when=ALL_COMPLETED)
,所以我可以等到return_when = FIRST_COMPLETED,但我怎么能保证它确实是监视器的未来。
提前tnx!答案 0 :(得分:2)
根据the documentation,方法wait
会返回两组:done
,not_done
期货。
检查您要检查的未来是否在done
设置。
fs = future_action, future_monitor
done, not_done = concurrent.futures.wait(fs, timeout=None, return_when=FIRST_COMPLETED)
if future_monitor in done:
# Do something