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