【发布时间】:2012-09-09 19:06:54
【问题描述】:
最近这点刺痛了我。我通过从代码中删除所有 numpy 数组与列表的比较来解决它。但是为什么垃圾收集器会错过收集呢?
运行它,看着它吃掉你的记忆:
import numpy as np
r = np.random.rand(2)
l = []
while True:
r == l
在 64 位 Ubuntu 10.04、virtualenv 1.7.2、Python 2.7.3、Numpy 1.6.2 上运行
【问题讨论】:
-
无法复制。您在交互式解释器中的哪个位置运行它?
-
脚本和控制台相同。
-
我可以重现它,听起来像是 numpy 中的一个错误,我认为最好报告它,可能是 numpy 中的一些引用计数出错了。
-
@larsmans 使用 64 位 Ubuntu 12.04、Python 2.7.3、numpy 1.6.2 在命令行上运行 IDE 和脚本复制。
-
对于好奇的人,@Hauke 的错误报告是 projects.scipy.org/numpy/ticket/2216 - 其中一位开发人员发现了发生这种情况的 C 级可能原因。
标签: python arrays list memory-management numpy