在Python中是否可以用一个进程将一个大对象加载到内存中,并在单独的独立进程中访问它?

Is it possible in Python to load a large object into memory with one process, and access it in separate independent processes?

我正在编写一个程序,该程序需要在一个非常大的 (~6GB) csv 文件上使用 运行ning 算法,该文件使用 read_csv() 加载 pandas。 我现在遇到的问题是,每当我调整算法并需要重新模拟(这很常见)时,我需要等待约 30 秒才能将数据集加载到内存中,然后再过 30 秒才能加载相同的数据集进入图形模块,这样我就可以直观地看到发生了什么。然而,一旦它被加载,操作就完成得非常快。

到目前为止,我已经尝试使用 mmap,并将数据集加载到 RAM 磁盘中进行访问,但没有任何改进。

我希望找到一种方法,用一个进程将数据集一次加载到内存中,然后使用算法-c[=28=在内存中访问它]ching 过程,每次我进行更改时都会重新运行。

This thread 似乎接近我的需要,但使用多处理需要在同一上下文中将所有内容 运行。

我不是计算机工程师(我是电气工程师 :),所以我不确定我的要求是否可行。但是,我们将不胜感激。

谢谢,

找到了一个有效的解决方案,尽管它与我最初的问题没有直接关系。

我没有将大文件加载到内存中并在独立进程之间共享,而是发现瓶颈确实是 pandas 库中的解析函数。 特别是 CSV 解析,因为 CSV 在数据存储方面是出了名的低效。

我开始以 python-native pickle 格式存储文件,pandas 通过 to_pickle() 和 read_pickle() 函数支持这种格式。这将我的加载时间从 ~30 秒大幅减少到 ~2 秒。