如何在 dask-distributed 中使用`client.start_ipython_workers()`?

问题描述

我试图让工作人员从他们的 ipython 内核输出一些信息并在 ipython 会话中执行各种命令。我尝试了文档中的示例并且 ipyparallel 示例有效,但不是第二个示例(使用 ipython 魔法)。我无法让工人执行任何命令。例如,我被困在以下问题上:

from dask.distributed import Client

client = Client()

info = client.start_ipython_workers()

list_workers = info.keys()

%remote info[list_workers[0]]

最后一行返回错误

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-19-9118451af441> in <module>
----> 1 get_ipython().run_line_magic('remote',"info['tcp://127.0.0.1:50497'] worker.active")

~/miniconda/envs/dask/lib/python3.7/site-packages/IPython/core/interactiveshell.py in run_line_magic(self,magic_name,line,_stack_depth)
   2334                 kwargs['local_ns'] = self.get_local_scope(stack_depth)
   2335             with self.builtin_trap:
-> 2336                 result = fn(*args,**kwargs)
   2337             return result
   2338 

~/miniconda/envs/dask/lib/python3.7/site-packages/distributed/_ipython_utils.py in remote_magic(line,cell)
    115     info_name = split_line[0]
    116     if info_name not in ip.user_ns:
--> 117         raise NameError(info_name)
    118     connection_info = dict(ip.user_ns[info_name])
    119 

NameError: info['tcp://127.0.0.1:50497']

如果有任何关于如何从在工作线程上运行的 ipython 内核获取任何信息的示例,我将不胜感激。

解决方法

在这里发布只是为了跟踪,我在 GitHub 上为此提出了一个问题:https://github.com/dask/distributed/issues/4522