给定 Client 实例是否可以关闭 dask.distributed 集群?

Is it possible to shutdown a dask.distributed cluster given a Client instance?

如果我有一个 distributed.Client 实例,我可以用它来关闭远程集群吗?即杀死所有工人并关闭调度程序?

如果使用 Client 实例无法做到这一点,除了手动终止每个远程进程之外,还有其他方法吗?

没有专门针对此的客户端函数。

调度程序有一个 close() 方法,您可以使用 run_on_scheduler 调用该方法

c.run_on_scheduler(lambda dask_scheduler=None: 
    dask_scheduler.close() & sys.exit(0))

这将告诉工作人员断开连接并关闭,并在终止进程之前关闭所有连接。请注意,这会在客户端引发错误,因为连接在没有回复的情况下中断。可能还有更优雅的方式。

请注意,正确的 方法可能是与其中一个部署集群管理器进行交互。例如,LocalCluster 有一个面向用户的 close() 方法,您可以直接调用它。

--编辑--

client.shutdown() 现已可用。