使用graphviz绘制Python对象引用图
项目描述
Python对象图
objgraph 是一个模块,允许您可视化探索Python对象图。
如果您想绘制漂亮的图形,则需要 graphviz。
我推荐 xdot 用于交互式使用。 pip install xdot 应该足够;objgraph 将自动在您的 PATH 中查找它。
安装和文档
pip install objgraph 或 从PyPI下载。
历史
当我正在寻找Python程序中的内存泄漏时,我开发了一套函数,这些函数最终变成了 objgraph。整个故事——包括有插图示例——可以在这一系列博客文章中找到
支持和开发
源代码可以在这个Git仓库中找到: https://github.com/mgedmin/objgraph。
要检查它,请使用 git clone https://github.com/mgedmin/objgraph。
变更
3.6.1 (2024-02-26)
添加对Python 3.12的支持。
3.6.0 (2023-06-16)
添加对Python 3.9、3.10和3.11的支持。
放弃对Python 2.7和3.6的支持。
3.5.0 (2020-10-11)
在Python 3上,测试套件不需要mock;使用unittest.mock代替。
使用coverage-python-version对每个Python版本进行100%测试覆盖率,而不是合并。
将可选的extra_node_attrs参数添加到show_backrefs和show_backrefs。
修复IPython/Jupyter内联图支持代码,即使你明确传递了filename='foo.png'参数,此代码也会启动。参见问题47。
添加对Python 3.8的支持。
放弃对Python 3.5的支持。
3.4.1 (2019-04-23)
添加对Python 3.7的支持。
放弃对Python 3.3和3.4的支持。
3.4.0 (2018-02-13)
新增函数:get_new_ids、at_addrs。
由Justin Black在PR 36中贡献。
3.3.0 (2017-12-28)
新增函数:growth。
3.2.0 (2017-12-20)
为typestats、most_common_types、show_most_common_types、show_growth添加新的filter参数。
以更人性化的方式显示lambda函数。
3.1.2 (2017-11-27)
更正变更日志中的UTF-8 mojibake,并将所有链接切换到HTTPS。
3.1.1 (2017-10-30)
添加对Python 3.6的支持。
在safe_repr中用except Exception:替换裸的except:。
3.1.0 (2016-12-07)
支持在IPython/Jupyter笔记本中内联显示图(问题28 <https://github.com/mgedmin/objgraph/pull/28>)。
3.0.1 (2016-09-17)
show_most_common_types和show_growth的file参数现在默认为None,而不是sys.stdout。None被视为与sys.stdout相同,这意味着如果你在运行时更改它(在doctests中会发生这种情况),将使用正确的stdout。
3.0.0 (2016-04-13)
2.0.1 (2015-07-28)
在by_type、count和typestats中避免在堆栈帧和局部objects变量之间创建引用循环。
修复了问题22。由Erik Bray贡献。
2.0.0 (2015-04-18)
show_refs和show_backrefs现在接受一个文件对象(通过新的output参数)作为替代于一个文件名。
将内部辅助方法设为私有。这包括find_chain、show_graph、obj_node_id、obj_label、quote、long_typename、safe_repr、short_repr、gradient、edge_label和_program_in_path。
正确确定count、by_type和绘图函数中的旧式类的名称。
修复了问题16。由Mike Lambert贡献。
1.8.1 (2014-05-15)
不要期望文件对象有一个encoding属性。使objgraph兼容Eventlet的monkey-patching。
修复了问题6。由Jakub Stasiak贡献。
1.8.0 (2014-02-13)
已迁移到GitHub。
支持Python 3.4(《launchpad.net/bugs/1270872》LP#1270872)。
新增功能:is_proper_module。
为typestats、most_common_types、show_most_common_types、show_growth、show_refs和show_backrefs新增了shortnames参数。
count和by_type现在接受完全限定的类型名称。
修复了问题4。
1.7.2 (2012-10-23)
错误修正:在Python 2.7上sdist损坏(tarfile中的UnicodeDecodeError)。
show_refs和show_backrefs的filename参数现在允许任意图像格式,而不仅仅是PNG。由Riccardo Murri补丁。
临时.dot文件现在命名为objgraph-*.dot而不是tmp*.dot。
Python 3.3支持:没有代码更改,但一些测试开始失败,因为新改进的字典实现不再保留用作字典键的str对象的引用。
添加了tox.ini以方便多Python测试。
1.7.1 (2011-12-11)
错误修正:对象表示中的非ASCII字符会在某些地区(例如LC_ALL=C)上Python 3.x中破坏图形生成。由Stefano Rivera报告并修复。
错误修正:setup.py在Python 3.x上损坏。
错误修正:Windows上找不到dot.exe/xdot.exe(《launchpad.net/bugs/767239》LP#767239)。
文档更新:记录了遗忘的find_ref_chain,更新了show_chain原型。
1.7.0 (2011-03-11)
新增功能:find_ref_chain。
为show_chain新增了backrefs参数。
新增功能:get_leaking_objects,基于Kristján Valur的一篇博客文章。
为count、typestats、most_common_types、show_most_common_types和by_type新增了objects参数。
指向函数属性(如__defaults__或__globals__)的边现在被标记。
现在显示不是简单字符串的边标签的类型。
错误修正:在字典键中使用的不安全字符(如‘0’)会破坏图形生成。
错误修正:show_refs(…, filename=’graph.dot’)会抱怨无法识别的文件类型,然后生成png。
1.6.0 (2010-12-18)
Python 3支持,感谢Stefano Rivera(修复了《launchpad.net/bugs/687601》LP#687601)。
删除了奇怪的weakref特殊处理。
1.5.1 (2010-12-09)
避免在uncollectable-garbage.txt中测试失败(修复了《launchpad.net/bugs/686731》LP#686731)。
添加了HACKING.txt(后来重命名为HACKING.rst)。
1.5.0 (2010-12-05)
显示帧对象(修复了《launchpad.net/bugs/361704》LP#361704)。
新增功能:show_growth、show_chain。
find_backref_chain在找不到链时返回[obj]而不是None,这使得show_chain(find_backref_chain(...), ...)不会中断。
通过指定too_many来显示从show_refs/show_backrefs输出中跳过的引用数量。
show_refs现在会进入模块。
不要突出显示定义了__del__的类,仅突出显示这些类的实例。
在show_refs/show_backrefs中显示引用计数。
添加了Sphinx文档和PyPI长描述。
1.4.0 (2010-11-03)
兼容Python 2.4和2.5(《tempfile.NamedTemporaryFile》没有《delete》参数)。
新增功能:most_common_types。
1.3.1 (2010-07-17)
重建sdist,不缺少文件(修复了《launchpad.net/bugs/606604》LP#606604)。
添加了MANIFEST.in和Makefile以检查setup.py sdist生成的源分布没有缺少文件。
1.3 (2010-07-13)
突出显示具有__del__方法的对象。
修复 LP#483411:建议始终将 [obj] 传递给 show_refs、show_backrefs,因为 obj 可能是一个列表/元组。
修复 LP#514422:show_refs、show_backrefs 现在不再在当前工作目录中创建文件。相反,它们接受一个文件名参数,可以是 .dot 文件或 .png 文件。如果为 None 或未指定,这些函数将尝试像以前一样启动 xdot。
为图形生成函数添加了新的 extra_info 参数(由 Thouis Jones 补丁,LP#558914)。
setup.py 现在应该与 distutils 兼容了(《a href="https://launchpad.net/bugs/604430" rel="nofollow">LP#604430,感谢 Randy Heydon)。
1.2 (2009-03-25)
项目网站,公共源代码库,已上传到 PyPI。
没有代码更改。
1.1 (2008-09-10)
新功能:用于显示前向引用的 show_refs。
新函数:typestats 和 show_most_common_types。
对象框中不再拥挤着无用的信息(如 ID)。
如果可用,将启动 xdot。
1.0 (2008-06-14)
第一个公共版本。
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
objgraph-3.6.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fe96c74147bbcaae8665b396e5388bdcc3197deebba4e6381f05202ee5b453a7 |
|
MD5 | dbb00c59c5fc4facc17df4c0c3c71eec |
|
BLAKE2b-256 | 49c4bd177f5a3c2730f939d0ee5949cb0a6a12402863bf3d482cb9e79f296b57 |
objgraph-3.6.1-py2.py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 21c6bc62df0e7b77cc0a31d96feec04c965f09ec2e3d78b816b516a604f0defd |
|
MD5 | 92addbb73c27b33d859bf3a2d35644a7 |
|
BLAKE2b-256 | 2e1c2bb1823795911dc928b4085c9cb97e50e95da664d2eb8a375b28f511a22e |