dask分发和工作窃取:如何整理已运行两次的任务?

2024-06-16 18:42:43 发布

您现在位置:Python中文网/ 问答频道 /正文

分布式Dask支持work stealing,这可以加快计算速度并使其更加健壮,但是每个任务可以多次运行。在

在这里,我要求一种方法来“整理”工人的结果,他们没有对最终结果作出贡献。为了说明我的要求:

假设每个工作线程都在进行类似蒙特卡罗的模拟,并将~10GB模拟结果保存在结果文件夹中。在工作被盗的情况下,模拟结果将被存储多次,因此只需要保留其中一个。实现这一目标的最佳方法是什么?可以达斯克。分布式自动调用一些“整理”程序来处理那些最终没有对最终结果产生影响的任务?在

编辑: 我当前使用以下代码启动模拟:

c = distributed.Client(myserver)
mytask.compute(get = c.get) #mytask is a delayed object

所以我想,之后所有的数据都会从集群中删除,如果我在计算之后“查看存在于多个位置的数据”,那就不能保证我能找到各自的任务?另外,我目前还不清楚如何将未来对象的ID映射到相应任务保存结果的文件名。我目前依靠tempfile来避免名称冲突,因为montecarlo模拟的设置是迄今为止最简单的。在


Tags: 数据方法文件夹get分布式线程整理dask