我正在使用非常大的 numpy/scipy 数组,它们占用了大量内存。假设我的代码如下所示:
def do_something(a):
a = a / a.sum() #new memory is allocated
#I don't need the original a now anylonger, how to delete it?
#do a lot more stuff
#a = super large numpy array
do_something(a)
print a #still the same as originally (as passed by value)
所以我正在调用一个带有巨大 numpy 数组的函数。然后该函数以某种方式处理该数组,但原始对象仍保留在内存中。有什么办法可以释放函数内部的内存吗?删除引用不起作用。
最佳答案
你想要的却做不到;仅当对数组对象的所有引用都消失时,Python 才会释放内存,并且您无法从函数中删除调用命名空间中的 a
引用。
相反,请将您的问题分解为更小的步骤。使用一个函数对 a
进行计算,然后删除 a
,然后调用另一个函数来完成其余的工作。
关于python - 如何在python函数中删除一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25531349/