2015-06-07 27 views
1

我最近处理的是concurrent.futures,我在一个执行者中提交了几个funcs,我想知道哪个未来回报率第一。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在提前!

回答

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