我正在Py3.6中学习concurrent.futures.ThreadPoolExecutor,但对于使用之间的优缺点有一些困惑
您何时会选择一个?如果我正确理解目的,则两者在或多或少上都是相同的。.#1在任务完成且相应的未来已经确定后立即调用callback(future)
fn,而#2 returns the futures object
的顺序是任务完成,期货结算。.
在两种情况下,我们都可以使用future.results()检索返回的值(或者如果引发异常,则引发future.exception()。)
感谢您对此做任何澄清。
答案 0 :(得分:0)
def as_completed(fs, timeout=None):
"""An iterator over the given futures that yields each as it completes.
add_done_callback是Futures类中的一种方法,它的功能比as_completed低。本质上,as_completed在内部使用add_done_callback。 as_completed还具有用于回调的超时参数。 通常,如果处理多个期货,我们可以使用as_completed,而将add_done_callback用于单个期货。 总体而言,对于简单的程序,add_done_callback和as_completed均可达到相似的目标。
只是一个想法。我们可以通过add_done_callback在期货列表中为每个期货使用不同的回调函数,而as_completed可能只接受单个回调。