将一个巨大的numpy数组映射到内存文件并在用户之间共享

时间:2017-02-23 00:59:14

标签: python numpy memory-management mmap

我正在尝试实现这样的东西:我有一个非常大(~60GB)的numpy数组存储在磁盘上。我想要全部阅读(它适合机器的RAM)并将其存储在内存中。到目前为止没问题。我需要做的是允许多个用户可能产生的多个进程具有对数据的读访问权(因为让每个进程分配60GB的RAM是不可行的。)

问题是我不能从主脚本中生成所有进程,这些进程为它们提供了对数据的引用,这将解决问题。 因此问题是:如何将文件加载到内存中,然后有一个引用(例如,内存映射文件的文件名,或思考我的C ++类的指针),我可以在进程之间共享,然后访问数据从其他过程?

我一直在调查mmap模块,但我不太清楚如何使用它来获取它。例如:mmap.mmap(f.fileno(), 0)创建内容为f的内存映射文件,对吧?但在我的情况下,我有一个.npy文件包含标题和类似的东西,所以我不能直接把它带到内存中,然后用通常的切片操作访问数据。

我已经看到很多讨论尝试与numpy相反(即内存映射一个大文件,以便你不要需要一次读取所有内容),但是到目前为止没有什么,我不确定它可以做到,是吗?

感谢您的任何意见,我知道这听起来确实很混乱,但我不确定是否有更好的解释方法..

0 个答案:

没有答案