在Dask中有一种简单的方法可以将纯python模块推送给工作人员吗?
我在群集中有很多工作人员,我想在我的客户端上分发一个本地模块。我知道对于像NumPy或Python这样的大型软件包,我应该以更健壮的方式分发内容,但是我有一个经常更改的小模块,不应该有太多工作要移动。
答案 0 :(得分:1)
如果您希望在工作人员启动后将其部署到工作人员,则可以使用Client.run和Client.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
结尾,则还会导入并重新加载每个工作人员的模块。