Cas*_*ash 30 python memory-leaks
我有一个Python程序,它运行一系列实验,没有数据打算从一个测试存储到另一个测试.我的代码包含一个我完全无法找到的内存泄漏(我看看内存泄漏的其他线程).由于时间限制,我不得不放弃寻找泄漏,但如果我能够隔离每个实验,程序可能会运行足够长的时间来产生我需要的结果.
具体情况详情
更新
Gnibbler的答案实际上让我发现我的ClosenessCalculation对象存储了每次计算中使用的所有数据都没有被删除.然后我用它来手动删除一些似乎已修复内存问题的链接.
Joh*_*ooy 60
你可以使用这样的东西来帮助追踪内存泄漏
>>> from collections import defaultdict
>>> from gc import get_objects
>>> before = defaultdict(int)
>>> after = defaultdict(int)
>>> for i in get_objects():
... before[type(i)] += 1
...
Run Code Online (Sandbox Code Playgroud)
现在假设测试泄漏了一些内存
>>> leaked_things = [[x] for x in range(10)]
>>> for i in get_objects():
... after[type(i)] += 1
...
>>> print [(k, after[k] - before[k]) for k in after if after[k] - before[k]]
[(<type 'list'>, 11)]
Run Code Online (Sandbox Code Playgroud)
因为我们泄露了一个包含10个以上列表的列表
| 归档时间: |
|
| 查看次数: |
16322 次 |
| 最近记录: |