[英]Force multiprocessing.Array to be created in memory instead of on disk
我在Linux上使用Python 3.4。 我想在RAM中创建一个数组,该数组将由multiprocessing
模块(即共享内存)产生的进程共享。 根据文档,这应该可以通过使用multiprocessing.Array
来实现。 当我使用
array = multiprocessing.Array('i', N)
Python在/tmp
创建一个文件,将其mmap.mmap()
,并通过mmap.mmap()
用作共享内存(我已经通过查看/usr/lib/python3.4/multiprocessing/heap.py
进行了验证)。 但是,我希望在内存而不是磁盘中真正创建阵列。 原因是在我的用例中, N
非常大(超过100 GB),我有很多RAM,但磁盘容量低。 因此, multiprocessing.Array()
的创建以IOError: No space left on device
结尾IOError: No space left on device
因为它使用磁盘上的文件作为共享内存而不是RAM。
我可以通过通过tmpfs
挂载目录并设置tempfile.tempdir
指向该目录来解决此问题。 但是,有没有更简单的方法? Python为什么以这种方式创建共享内存?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.