1

我最近在处理 concurrent.futures,我在一个 executor 中提交了几个函数,我想知道哪个 future 先返回。

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 提前!

4

1 回答 1

2

根据文档,该方法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
于 2015-06-07T10:11:19.573 回答