Python内存跟踪。
pymemtrace的Python项目详细描述
pymemtrace提供了跟踪和了解Python在不同级别、不同级别上的内存使用情况的工具 粒度和不同的运行时间成本。在
完整文档:https://pymemtrace.readthedocs.io
pymemtrace工具
pymemtrace提供的工具:
- process是一种非常轻量级的以固定时间间隔记录内存使用总量的方法。 它可以使用绘图程序(如gnuplot)绘制内存。 见some process examples
- cPyMemTrace是用C编写的内存跟踪器,它可以报告每次函数调用/返回的总内存使用情况 C和Python部分。 看一些cPyMemTrace examples 还有一个technical note on cPyMemTrace。在
- DTrace:下面是一些D脚本,它们可以跟踪低级的malloc()和free()系统调用和 报告分配了多少内存以及由谁分配。 看一些DTrace examples 还有一个technical note on DTrace。在
- trace_malloc是Python标准库tracemalloc模块的一个方便包装器。 这可以通过补偿tracemalloc的成本按模块和行报告Python内存使用情况。 这可以在代码块前后获取内存快照,并显示由该代码引起的内存更改。 看一些trace_malloc examples
- debug_malloc_stats是sys._debugmallocstats函数的包装器,可以对其进行快照 代码执行前后内存和报告Python小对象分配器的显著差异。 看一些debug_malloc_stats examples
刀具特性
每种工具的特点是:
- Memory Granularity:在多大程度上观察到内存变化。 rough内存粒度的一个例子是测量 Resident Set Size通常是4096字节的块。 fine内存粒度的一个例子是记录每一个malloc()和free()。在
- Execution Granularity:观察到的内存更改在多大程度上是代码细节。 rough执行粒度的一个例子是测量每秒的内存使用量。 fine执行粒度的一个例子是记录每个Python行的内存使用情况。在
- Memory Cost:工具需要多少额外内存。在
- Execution Cost:执行时间增加了多少。在
很明显,这取决于你要解决的问题。在
Tool | Memory Granularity | Execution Granularity | Memory Cost | Execution Cost |
---|---|---|---|---|
^{tt3}$ | RSS (total Python and C memory). | Regular time intervals. | Near zero. | Near zero. |
^{tt5}$ | RSS (total Python and C memory). | Per Python line, Python function and C function call. | Near zero. | x10 to x20. |
DTrace | Every ^{tt6}$ and ^{tt7}$. | Per function call and return. | Minimal. | x90 to x100. |
^{tt8}$ | Every Python object. | Per Python line, per function call. | Significant but compensated. | x900 for small objects, x6 for large objects. |
^{tt10}$ | Python memory pool. | Snapshots the CPython memory pool either side of a block of code. | Minimal. | x2000+ for small objects, x12 for large objects. |
包元数据
许可证
Python内存跟踪。在
- 免费软件:麻省理工学院许可证
- 文档:https://pymemtrace.readthedocs.io。在
- 项目:https://github.com/paulross/pymemtrace。在
学分
PhilSmith(AHL)和他在午餐时间闲聊,创造了一个早期的,但完全不同的 在纯Python中实现cPyMemTrace。在
此包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。在
历史
0.1.1(2020年11月17日)
- 添加C级探查器cPyMemTrace。在
- 为低级跟踪添加DTrace脚本。在
- 在sys.\u debugmallocstats的包装器中添加debug\u mallocstats。在
- 从TotalDepth项目添加进程。在
- 为debug_malloc_stats添加redirect_stdout。在
- 添加trace_malloc,tracemalloc是tracemalloc模块的包装器。在
- 包括广泛的文档和性能度量。在
- PyPI的第一个版本。在
2017年4月1日
- 最初的想法和实施,从未发布。在
- 项目
标签: