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_statssys._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 Characteristics
ToolMemory GranularityExecution GranularityMemory CostExecution 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.
DTraceEvery ^{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.

包元数据

https://img.shields.io/pypi/v/pymemtrace.svghttps://img.shields.io/travis/paulross/pymemtrace.svgDocumentation StatusUpdates

许可证

Python内存跟踪。在

学分

PhilSmith(AHL)和他在午餐时间闲聊,创造了一个早期的,但完全不同的 在纯Python中实现cPyMemTrace。在

此包是用Cookiecutteraudreyr/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日
  • 最初的想法和实施,从未发布。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Maven中的java,为什么要运行“mvn clean”?   java会降低图像质量。OutOfMemory异常Android   在Java8中将函数传递到流的过滤方法   jboss6。x java。lang.NoClassDefFoundError,当我将<listenerclass>包含到web时。xml java   java读取图像像素时,像素Alpha始终为255   java在迭代后跳过一行   java如何创建我自己的单链表   意图上的java空指针异常。getStringExtra.:安卓   具有连接实体的java Hibernate onetoone映射   java需要帮助在自制的仓鼠模拟器上实现启动/恢复/暂停/停止线程操作   如何测试非主方法?[Java,IntelliJ]   java jdbc自动提交(false)不起作用   java在JADE中的同一容器中创建多个代理   java OkHttp获取失败的响应正文   java Webdriver flash按钮