将纯python模块推送给Dask worker

时间:2018-03-16 18:58:07

标签: dask

在Dask中有一种简单的方法可以将纯python模块推送给工作人员吗?

我在群集中有很多工作人员,我想在我的客户端上分发一个本地模块。我知道对于像NumPy或Python这样的大型软件包,我应该以更健壮的方式分发内容,但是我有一个经常更改的小模块,不应该有太多工作要移动。

2 个答案:

答案 0 :(得分:1)

如果您希望在工作人员启动后将其部署到工作人员,则可以使用Client.runClient.restart

执行与此类似的工作
def deploy_env(packages):
    conda_prefix = pathlib.Path(sys.executable).parent.parent
    res = subprocess.check_output(['conda', 'install', '-p', conda_prefix] + packages)
    return res

# Run the deploy command on all the workers
result = client.run(deploy_env, packages)

# Restart all the worker processes
client.restart()

在此之后,指定的软件包将安装在所有当前正在运行的工作程序上。

在向调度程序添加其他工作程序时,此方法无效。

答案 1 :(得分:0)

是的,请使用Client.upload_file方法。

client.upload_file('myfile.py')

此方法将分发文件,如果文件以.py.egg结尾,则还会导入并重新加载每个工作人员的模块。