我正在与多个系统一起工作。 每个工作人员系统都有一部分本地存储的数据。我希望每个工作人员只在其各自的文件上完成计算。
我尝试过使用:
但我无法自动为每个文件分配任务。
另外,无论如何我可以访问该工作人员的本地文件吗?使用tcp地址,我只能访问为dask创建的worker的临时文件夹。
答案 0 :(得分:0)
您可以使用workers=
关键字将某些工作人员的计算目标定位到客户端上的各种方法。有关详细信息,请参阅http://distributed.readthedocs.io/en/latest/locality.html#user-control。
您可以在每个工作人员上运行一个函数,告诉您哪些文件存在:
>>> client.run(os.listdir, my_directory)
{'192.168.0.1:52523': ['myfile1.dat', 'myfile2.dat'],
'192.168.0.2:4244': ['myfile3.dat'],
'192.168.0.3:5515': ['myfile4.dat', 'myfile5.dat']}
然后,您可以提交计算以专门针对这些工作人员运行。
future = client.submit(load, 'myfile1.dat', workers='192.168.0.1:52523')
如果你正在使用dask.delayed,你也可以将workers=
传递给`persist方法。有关详细信息,请参阅http://distributed.readthedocs.io/en/latest/locality.html#user-control