【发布时间】:2017-05-18 14:06:10
【问题描述】:
我必须加载这个巨大的对象A(可以重 10go),我需要将它传递给一个函数,该函数从中提取一个参数 B 以进一步对其进行一些繁重的计算。
A = load(file)
def function(A):
B = transorm(A)
B = compute(B)
return(B)
为了释放一些内存(因为我已经有一个 MemoryError),我想在转换为 B 之后立即从内存中删除 A。
我尝试了del,但它似乎不影响脚本级别A 的存在。我也试过del global()["A"],但它说 A 没有定义为全局变量。
有办法吗?谢谢!
【问题讨论】:
-
也许如果你从 function() 内部加载 A 开始,你可以利用它只会“存在”直到函数返回的事实,因为它会超出范围...如果我不在这里,请有人纠正我
-
你有没有试过在调用函数后删除文件?
-
我真的会考虑为这样的任务选择另一个环境 - 没有自动垃圾收集。也许可以不首先加载整个对象?
-
您很可能以错误的方式处理文件,问题可能在于加载 fn 以及您如何处理文件,而“a”问题只是结果..跨度>
标签: python memory optimization global-variables del