Python - 从函数内部删除(从内存中删除)变量?

标签 python memory optimization global-variables del

我必须加载这个巨大的对象 A(可以称重 almsot 10go),我需要将其传递给一个函数,该函数从中提取参数 B 以进一步对其进行一些繁重的计算。

A = load(file)

def function(A):    
   B = transorm(A)    
   B = compute(B)
   return(B)

为了释放一些内存(因为我已经有一个 MemoryError),我想在 A 转换为 B 之后立即从内存中删除它。 我尝试了 del 但它似乎并不影响 A 在脚本级别的存在。我也试过 del global()["A"] 但它说 A 没有定义为全局变量。

有办法吗?谢谢!

最佳答案

del A 将简单地从 function 的局部作用域中删除 A(参见 this answer)。 A 仍将保留在全局范围内。要将其从全局范围中删除,您可以使用闭包(并声明 global A)或使用 python3,您还可以使用关键字 nonlocal .但是,这只会从范围中删除绑定(bind),并不能保证释放相应的内存。当对象被垃圾收集 时会发生这种情况。您可以通过 gc 模块强制进行垃圾收集(参见 this answer )。

但是,如果您遇到内存问题,而不是加载整个数据集,您可以使用数据集的 View ,并且一次只处理(加载)它的一部分(即流式处理数据).

关于Python - 从函数内部删除(从内存中删除)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461169/

相关文章:

python - Pyinstaller 错误 xfd 模块

python - django modeladmin list_display

python - 终止子进程后 Shell 挂起

c - 嵌入式系统中的内存分配

c# - 如何优化此代码以获得更好的可读性?

python - 如何将许多列汇总为独特的组合

python - Python 中字典列表的条件操作

amazon-web-services - aws 批处理作业陷入可运行状态,作业定义的内存要求很高

c++ - 从函数返回本地对象

python - 优化此 python 日志解析代码