【问题标题】:Dask Client detect local default cluster already runningDask Client 检测本地默认集群已经在运行
【发布时间】:2019-11-27 12:28:25
【问题描述】:
from dask.distributed import Client

Client()
Client(do_not_spawn_new_if_default_address_in_use=True)  # should not spawn a new default cluster

这有可能以某种方式做到吗?

【问题讨论】:

    标签: dask dask-distributed


    【解决方案1】:

    非公共函数distributed.client._get_global_client()如果存在则返回当前客户端,或者None

    client = _get_global_client() or Client()
    

    由于是内部的,API 可能会更改,恕不另行通知。

    【讨论】:

      【解决方案2】:

      您实际上不应该在同一个 Python 会话中创建多个客户端。可能值得深入挖掘您为什么不止一次致电Client()

      如果您已经在默认地址上运行了 Dask 集群,您可以设置 DASK_SCHEDULER_ADDRESS 环境变量,这将指示客户端查看那里而不是创建本地集群。

      >>> import os
      >>> os.environ['DASK_SCHEDULER_ADDRESS'] = 'tcp://localhost:8786'
      
      >>> from dask.distributed import Client
      >>> Client() # Does not create a cluster
          <Client: 'tcp://127.0.0.1:8786' processes=0 threads=0, memory=0 B>
      

      【讨论】:

      • 我的用例很简单:在 jupyter 笔记本中,有时我会将 Client() 调用放在一个单元格中,而其他代码会被多次调用,这是唯一的原因。与其说是必须拥有,不如说是美好的。
      • 在这种情况下,我建议将Client() 放在一个您只调用一次的不同单元格中。
      猜你喜欢
      • 1970-01-01
      • 2018-03-16
      • 2012-04-23
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      相关资源
      最近更新 更多