【发布时间】:2015-11-16 01:42:04
【问题描述】:
我试图在 Python 中的不同进程之间共享一个大对象(~2 GB),以减少内存使用。我已经了解了多处理库 (https://docs.python.org/3.4/library/multiprocessing.html#multiprocessing-managers) 中的 Manager 类和代理。但是,根据文档和其他 Stackoverflow 用户的说法,当它用于像这样的大型对象时,这可能会非常慢。这是正确的,如果是这样,是否有另一个更快的 Python 库或函数可以代替我使用?谢谢。
编辑:我创建的对象是一个 DAG(有向无环图),其构造函数由标准 python 值组成。
【问题讨论】:
-
你所说的“共享”是什么意思——读取还是变异?
-
我的意思是阅读。我不会以任何方式更改对象。
-
你看过mmap吗?
-
我有,但没听说过太多。它比代理对象快吗?
-
取决于你在做什么,mmap 可以非常快。如果您要共享复杂的对象树,可能不会那么多,但如果您要共享能够很好地映射到文件的东西,那么它只是保留在内存中的数据。
标签: python performance python-3.4 python-multiprocessing