我必须在只有几 GB 虚拟内存的资源受限环境中运行 python。更糟糕的是,作为应用程序设计的一部分,我必须从我的主进程中 fork 子进程,所有这些子进程都会在 fork 上收到相同数量的虚拟内存的写时复制分配。结果是,在仅 fork 1 - 2 个子进程后,进程组达到上限并关闭所有进程。最后,我无法删除 numpy 作为依赖项;这是一个严格的要求。
关于如何降低初始内存分配的任何建议?
例如
- 更改导入时分配给 numpy 的默认数量?
- 禁用该功能并强制 python/numpy 更动态地分配?
详情:
红帽企业 Linux 服务器版本 6.9(圣地亚哥)
Python 3.6.2
numpy>=1.13.3
裸解释器:
import os
os.system('cat "/proc/{}/status"'.format(os.getpid()))
# ... VmRSS: 7300 kB
# ... VmData: 4348 kB
# ... VmSize: 129160 kB
import numpy
os.system('cat "/proc/{}/status"'.format(os.getpid()))
# ... VmRSS: 21020 kB
# ... VmData: 1003220 kB
# ... VmSize: 1247088 kB
最佳答案
谢谢你,skullgoblet1089,在 SO 和 https://github.com/numpy/numpy/issues/10455 上提出问题, 并进行回答。 引用您的 2018-01-24 帖子:
通过 export OMP_NUM_THREADS=4
减少线程将降低 VM 分配。
关于python - 为什么在 Linux 上导入 numpy 会增加 1 GB 的虚拟内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48392773/