在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()
只会取消尚未运行的期货。
但是对于那些正在执行的任务,有什么办法可以忽略它们?
提前谢谢!
答案 0 :(得分:1)
听起来as_completed迭代器可以解决您的问题。您可以等待一组期货,并在它们到达时更新系统。然后,您有足够的信息(或超时已过去),只需继续操作并删除运行中的期货即可。