分布式Dask支持work stealing,这可以加快计算速度并使其更加健壮,但是每个任务可以多次运行。在
在这里,我要求一种方法来“整理”工人的结果,他们没有对最终结果作出贡献。为了说明我的要求:
假设每个工作线程都在进行类似蒙特卡罗的模拟,并将~10GB模拟结果保存在结果文件夹中。在工作被盗的情况下,模拟结果将被存储多次,因此只需要保留其中一个。实现这一目标的最佳方法是什么?可以达斯克。分布式自动调用一些“整理”程序来处理那些最终没有对最终结果产生影响的任务?在
编辑: 我当前使用以下代码启动模拟:
c = distributed.Client(myserver)
mytask.compute(get = c.get) #mytask is a delayed object
所以我想,之后所有的数据都会从集群中删除,如果我在计算之后“查看存在于多个位置的数据”,那就不能保证我能找到各自的任务?另外,我目前还不清楚如何将未来对象的ID映射到相应任务保存结果的文件名。我目前依靠tempfile来避免名称冲突,因为montecarlo模拟的设置是迄今为止最简单的。在
目前在Dask中,被窃取的任务和未被窃取的任务之间没有区别。在
如果需要,可以查看多个位置中存在的数据,然后使用以下操作将命令直接发送给这些工作线程:
相关问题 更多 >
编程相关推荐