Python内存泄漏
我有一个长时间运行的脚本,如果运行时间足够长,将会占用系统上的所有内存。
没有详细说明剧本,我有两个问题:
看看这篇文章:跟踪python内存泄漏
另外,请注意垃圾收集模块实际上可以设置调试标志。 看看set_debug
函数。 另外,请查看Gnibbler的这段代码来确定调用后创建的对象的类型。
我尝试了以前提到的大多数选项,但发现这个小而直观的软件包是最好的:pympler
跟踪未被垃圾收集的对象非常简单,请检查以下小例子:
通过pip install pympler
安装软件包
from pympler.tracker import SummaryTracker
tracker = SummaryTracker()
# ... some code you want to investigate ...
tracker.print_diff()
输出显示所有已添加的对象,以及它们消耗的内存。
示例输出:
types | # objects | total size
====================================== | =========== | ============
list | 1095 | 160.78 KB
str | 1093 | 66.33 KB
int | 120 | 2.81 KB
dict | 3 | 840 B
frame (codename: create_summary) | 1 | 560 B
frame (codename: print_diff) | 1 | 480 B
该软件包提供了许多更多功能。 检查pympler的文档,特别是识别内存泄漏部分。
让我推荐mem_top工具,
这帮助我解决了类似的问题。
它立即显示了Python程序中内存泄漏的顶级嫌犯。
链接地址: http://www.djcxy.com/p/18385.html上一篇: Python memory leaks