问题描述
在运行需要大量RAM的python程序时,我需要调用一个外部程序,这样做会导致以下异常:
OSError:[Errno 12]无法分配内存
据我了解,这是因为我正在使用的popen函数在执行子级之前临时分配了父亲进程使用的相同数量的RAM。
这是正确的吗?如何防止重复分配?我与popen无关
下面是一个示例脚本,该脚本演示了我正在处理的问题(在128 Gb节点上):
import subprocess
import numpy as np
import sys
import os
NGB = 70
NBYTES = NGB * 1024**3
SIzefLOAT = 8
NFLOAT = NBYTES//SIzefLOAT
print("Allocating {} GB of memory ({} float)".format(NGB,NFLOAT))
a = np.zeros(NFLOAT,dtype=np.float64)
a += 1
print("Allocation successful")
subprocess.call(["ls","-l"])
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)