【发布时间】:2018-10-05 08:18:45
【问题描述】:
当我在函数内初始化 Numpy 数组时,Python 不会在函数返回后释放内存,如下面的代码示例所示。有什么办法可以释放这个内存吗?使用 gc.collect() 不起作用,在 Python2 和 Python3 中也会出现同样的问题。
import numpy as np
import resource
def function():
x = np.random.random([10000, 10000])
print('Memory usage: %s (kb)'% resource.getrusage(resource.RUSAGE_SELF).ru_maxrss)
function()
print('Memory usage: %s (kb)'% resource.getrusage(resource.RUSAGE_SELF).ru_maxrss)
代码输出:
内存使用量:20560 (kb)
内存使用量:801832 (kb)
【问题讨论】:
-
函数后面需要用到numpy数组吗?
-
我知道某处有重复。现在,请阅读以下内容:effbot.org/pyfaq/…
-
另请注意
gc在这里完全不相关,没有任何引用周期,因此内存由简单的引用计数管理(当然是在 CPython 中)