为什么这个小的python代码会导致内存泄漏?

python numpy memory-leaks

66 观看

1回复

74 作者的声誉

def fun():
    n = 300
    features = [[0 for i in range(0, n)] for j in range(0, n)]  
    for i in range(n):
        for j in range(i, n):
            features[i][j] = [np.random.random((300,300))]
    return

for i in range(10000):
    fun()

Featues只是局部变量,应该在有趣的回报之后收集。为什么这会导致内存泄漏?

作者: Jason 的来源 发布者: 2016 年 1 月 8 日

回应 (1)


3

147 作者的声誉

决定

您的代码存储300 * 300 * 300 * 300浮点数。每个浮点数为8个字节(numpy浮点数的默认值)超过64 GB。我怀疑这就是为什么您遇到内存问题。

但这不是内存泄漏。您真的要制作4D野兽矩阵吗?如果您只需要300 x 300,看起来就像np.random.random((300, 300))给您的那样。参见http://docs.scipy.org/doc/numpy-1.10.0/reference/generation/numpy.random.random.html#numpy.random.random

作者: Alex 发布者: 08.01.2016 02:13
32x32