python - 如何在python函数中删除一个对象?

标签 python memory numpy scipy

我正在使用非常大的 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/

相关文章:

numpy - 以高值为中心的对数正态随机数

python - 使用 Python 检测 numpy 图像数组中重复项的最有效方法是什么?

python - 从 subprocess.Popen 启动时 Drush 挂起

python - 如何在 pandas 中追加与循环对齐的列

python - 确定Python的实际内存使用情况

c# - 可变结构与类?

Python 正则表达式 : Reject one two-digit number and accept other two-digit numbers

java - `+=` 运算符是否总是创建一个新的字符串对象?

c - 为什么我的值(value)不会增加?内存踩踏/堆栈故障?

python - 将单个时间序列与大量时间序列相关联