考虑这样一个简单的工作流程:
from dask.distributed import Client
import time
with Client() as client:
futs = client.map(time.sleep, list(range(10)))
由于上下文管理器将关闭,上述代码将提交并几乎立即取消期货。可以在使用 完成任务之前保持上下文管理器打开client.gather
,但这将阻止当前进程中的进一步执行。
我有兴趣在同一个进程中向多个集群(例如本地和分布式)提交任务,最好不要阻塞当前进程。明确定义不同的客户端和集群很简单,但是上下文管理器(每个唯一的客户端/集群一个)也可以吗?
这听起来有点像反模式,但也许只有在计算所有期货运行后才能关闭集群。我试过fire_and_forget
也试过 pass shutdown_on_close=False
,但这似乎没有实现。