【问题标题】:Why would this little python code cause memory leak?为什么这个小python代码会导致内存泄漏?
【发布时间】:2016-04-12 14:53:09
【问题描述】:
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()

Features 只是 fun 返回后应该收集的局部变量。为什么会导致内存泄漏?

【问题讨论】:

  • 为什么会出现内存泄漏?
  • 您可以尝试运行代码并查看内存消耗,您会看到

标签: python numpy memory-leaks


【解决方案1】:

您的代码存储了 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/generated/numpy.random.random.html#numpy.random.random

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多