Guppy 3
Python 编程环境和堆分析工具集。
该软件包包含以下子包:
- etc - 支持模块。特别包含 Glue 协议模块。
- gsl - Guppy 规范语言实现。可用于从共同源创建文档和测试。
- heapy - 堆分析工具集。可用于查找有关堆中对象的信息并以各种方式显示信息。
- sets - 用 C 实现的位集和"节点集"。
Guppy 3 是 Sverker Nilsson 为 Python 2 创建的 Guppy-PE 的一个分支。
要求
您应该使用 Python 3.8、3.9、3.10、3.11 或 3.12。此软件包仅支持 CPython;不支持 PyPy 和其他 Python 实现。Python 2 支持可以从 Sverker Nilsson 的 guppy-pe 获得,本软件包是从其分支而来的。
要使用图形浏览器,需要 Tkinter。 要使用远程监视器,必须有线程支持。
安装
通过 pip 安装:
pip install guppy3
通过 conda 安装:
conda install -c conda-forge guppy3
用法
以下示例展示了
- 如何创建会话上下文:
h=hpy()
- 如何显示堆中可达的对象:
h.heap()
- 如何显示从根到单个最大对象的最短路径:
h.heap().byid[0].sp
- 如何创建并显示一组对象:
h.iso(1,[],{})
>>> from guppy import hpy; h=hpy()
>>> h.heap()
30976个对象集合的分区。总大小 = 3544220 字节。
索引 数量 % 大小 % 累计 % 类型(类 / 类的字典)
0 8292 27 739022 21 739022 21 str
1 7834 25 625624 18 1364646 39 tuple
2 2079 7 300624 8 1665270 47 types.CodeType
3 400 1 297088 8 1962358 55 type
4 4168 13 279278 8 2241636 63 bytes
5 1869 6 269136 8 2510772 71 function
6 400 1 228464 6 2739236 77 dict of type
7 79 0 139704 4 2878940 81 dict of module
8 1061 3 93368 3 2972308 84 types.WrapperDescriptorType
9 172 1 81712 2 3054020 86 dict (no owner)
<还有89行。输入如 '_.more' 查看。>
>>> h.heap().byid[0].sp
0: h.Root.i0_modules['os'].__dict__
>>> h.iso(1,[],{})
3个对象集合的分区。总大小 = 348 字节。
索引 数量 % 大小 % 累计 % 类型(类 / 类的字典)
0 1 33 248 71 248 71 dict (no owner)
1 1 33 72 21 320 92 list
2 1 33 28 8 348 100 int
>>>
人们已经写了一些很棒的文章介绍如何使用这个工具集,包括:
- 如何使用 guppy/heapy 跟踪内存使用情况
- 使用 TrackRefs 和 Guppy 调试 Django 内存泄漏
- 诊断 Python 中的内存"泄漏"
- 使用 heapy 深入研究 ckan 中的 python 内存问题
贡献
欢迎提出问题和拉取请求。您也可以寻求使用这个工具集的帮助;但在这种情况下,我们只会提供指导,而不会为您分析代码。
请确保适当更新测试。
测试
要测试 heapy 的构建和安装是否正确,您可以执行:
>>> from guppy import hpy
>>> hpy().test()
测试 sets
测试 #0
测试 #1
测试 #2
...
将会有更多的测试。一些测试可能需要一段时间。
许可证
版权所有 (C) 2005-2013 Sverker Nilsson, S. Nilsson Computer System AB
版权所有 (C) 2019-2021 朱一飞
版权所有 (C) 2021-2023 朱一飞, Google LLC
根据通常称为 MIT 许可证的规则,授予复制、使用、修改和重新分发此代码的权利。
这不是 Google 的官方产品。
*** 使用风险自负,请注意这是一个早期版本 ***