繁体   English   中英

强制在内存而不是磁盘中创建multiprocessing.Array

[英]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为什么以这种方式创建共享内存?

简短的答案是“否”。长的答案请阅读以下内容:

在此处输入链接说明

您始终可以使用os.fork()将父级内存的副本传递给子级,但实际上不能共享地址空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM