介绍
我有一个用Python 3.6编写的相当复杂的 Python 程序(比如超过 5.000 行)。该程序解析超过 5.000 个文件的庞大数据集,处理它们创建数据集的内部表示,然后创建统计数据。由于我必须测试模型,我需要保存数据集表示,现在我正在通过使用序列化来完成dill
(在表示中有pickle
不支持的对象)。整个数据集的序列化,未压缩,大约需要 1GB。
问题
现在,我想通过并行化加速计算。完美的方法是多线程方法,但 GIL 禁止这样做。multiprocessing
模块(并且multiprocess
- 也是dill
兼容的)使用序列化在进程之间共享复杂对象,因此,在我设法发明的最佳情况下,由于数据集的巨大规模,并行化对我的时间性能影响很大。
问题
处理这种情况的最佳方法是什么?
我知道posh
,但它似乎只是x86
兼容的,ray
但它也使用序列化,gilectomy
(没有 gil 的 python 版本)但我无法使其并行化线程并且Jython
没有 GIL 但与 python 3 不兼容。 X。
我愿意接受任何替代方案,任何语言,无论它可能多么复杂,但我无法从头开始重写代码。