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

时间:2019-05-20 10:38:13

标签: python distributed dask

this post中讨论了在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()只会取消尚未运行的期货。

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

提前谢谢!

1 个答案:

答案 0 :(得分:1)

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