concurrent.futures:确定哪些未来会返回

时间:2015-06-07 09:52:09

标签: python python-3.x concurrent.futures

我最近在处理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!

1 个答案:

答案 0 :(得分:2)

根据the documentation,方法wait会返回两组:donenot_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