3.perf stat命令可以了解最终执行于CPU的指令的个数和CPU缓存的利用率 4.heapy模块,可以追踪内存中的所有对象,这是为了解决内存泄漏,即使是引用计数,也不可避免一些奇怪的内存泄漏。
选择安装了 heapy 模块查看 python 运行时的内存。 另外 heapy 对原来的代码侵入性也比较小,下面三行代码几乎就能将 python 运行时的内存大概情况看清楚: from guppy import hpy p = hpy() print(p.heap
在 Python 中管理内存泄漏可能是一项艰巨的任务,但幸运的是有一些工具(如 heapy)用于调试内存泄漏。Heapy 可以与 objgraph 一起使用来观察 diff 对象的分配随时间而增长。 Heapy 可以显示哪些对象占用最多的内存。Objgraph 可以帮助您找到反向引用,以明白为什么它们不能被释放。您可以在 这里[4] 阅读更多关于在Python中诊断内存泄漏的信息。
(5)Guppy 项目的 heapy 工具,查看 Python 堆中对象的数量以及每个对象的大小,这对于消灭奇怪的内存泄漏特别有用。
一个使用 heapy 测量 Nova 启动大小的工作台展示了 SQLAlchemy 对象、相关字典以及弱引用在“nova.db.sqlalchemy.models”基本导入中占用的空间减少了约 3.7 兆字节,或者说减少了 46%: # reported by heapy, summation of SQLAlchemy objects + # associated dicts + weakref-related SQLAlchemy 的对象、相关字典以及弱引用所占空间减少了约 3.7 兆字节,或者说减少了 46%,在基本导入“nova.db.sqlalchemy.models”时: # reported by heapy 一个利用 heapy 测量 Nova 启动大小的工作台展示了 SQLAlchemy 对象、相关字典以及弱引用在“nova.db.sqlalchemy.models”基本导入中占用的空间约减少了 3.7 兆字节,或 46%: # reported by heapy, summation of SQLAlchemy objects + # associated dicts + weakref-related