从python调用子进程时内存不足

问题描述

在运行需要大量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 (将#修改为@)