当计算速度比 dask 分布式传输速度更快时如何复制数据?

How to replicate data when it is faster to compute than transfer in dask distributed?

我有一个较大的对象 (150 MB),我需要将其广播给所有 dask 分布式工作人员,以便在未来的任务中使用。我尝试了几种方法:

但是,强制每个工作人员 运行 在本地加载数据功能可能会更快,而不是将数据加载到一个工作人员上并将其序列化为从一个工作人员到另一个工作人员。有没有办法做到这一点? Client.run 似乎是我想要的一部分,但我需要为加载的数据找回未来,我可以稍后将其传递给其他任务。

这里的简短回答是 "no",没有直接的方法来完成这个。如果您习惯于使用内部代码(可能会在没有警告的情况下更改),则可以将某些东西组合在一起。

另一种方法是定义对象序列化的计算行为,然后在反序列化代码中再次调用该函数。

我遇到了与我在 Whosebug 上询问并最近解决的完全相同的问题,请参阅 了解我的解决方案。