Python 更改多处理(windows)的串行化协议

Python 更改多处理(windows)的串行化协议,python,pickle,dask,Python,Pickle,Dask,我正在使用 dask.compute(*delayeds, scheduler='processes', num_workers=4) 并行运行并行计算 然而,我在检索计算结果时遇到了一个问题,因为返回的对象大小超过4GB。多处理中的pickle协议默认为3,4GB是其限制 我想知道是否可以将协议更改为4 我在中发现了一些提示,但在windows上似乎不起作用 谢谢在回答具体问题之前,请注意以下几点: 您可能不应该使用多处理,而应该使用分布式调度程序,它更现代化、功能更强大,并且具有非常可插

我正在使用

dask.compute(*delayeds, scheduler='processes', num_workers=4)
并行运行并行计算

然而,我在检索计算结果时遇到了一个问题,因为返回的对象大小超过4GB。多处理中的pickle协议默认为3,4GB是其限制

我想知道是否可以将协议更改为4

我在中发现了一些提示,但在windows上似乎不起作用


谢谢

在回答具体问题之前,请注意以下几点:

  • 您可能不应该使用多处理,而应该使用分布式调度程序,它更现代化、功能更强大,并且具有非常可插入的串行化协议

  • 向工人发送4GB似乎非常像一个;您是否无法直接将数据加载到worker中,并在检索之前进行写入或聚合,从而完全避免序列化问题


实际上,我的代码很好地解决了我的问题,使用dask多进程是提高速度的一种不太具侵入性的方法,几乎与进程数量成正比。它工作得很好,但当问题出现时,我们试图看到代码的局限性。我们知道我们会在某一点上命中RAM pb内存。但自从我有64Go Ram之后,我们就开始了这部连续剧。我认为增加PB大小的最简单和最快的方法是利用这个序列化的PB在泡菜中从协议3传递到4。我强烈鼓励您考虑避免序列化,这必须耗费大量的时间和CPU以及内存。