忽略 Dask 分布式中的长 运行 任务

Ignore long running tasks in Dask distributed

中讨论了不能在Dask中取消已经开始的任务(语言限制)。

但是如果我只想忽略这些任务怎么办?

start_computing_time = time.time()

for future in task_pool:
    if condition:
       do_something_long(future.result()) 
    else:       
       future.cancel()

total_computing_time = time.time() - start_computing_time

在我的应用程序中,执行时间很关键。一旦满足停止条件,我只想省略 运行 任务,因为我不再对这些结果感兴趣。据我所知,future.cancel() 不会取消 运行 期货。

但是对于那些正在执行的任务,有什么办法可以忽略它们吗?

提前致谢!

听起来 as_completed 迭代器可能会解决您的问题。您可以等待一组期货并在它们到达时更新您的系统。然后你有足够的信息(或者超时已经过去)你可以继续并删除 运行 期货。