Python中的统计分析

gue*_*tli 7 python profiling usage-statistics

我想知道Python解释器在我的生产环境中正在进行.

前段时间我写了一个名为live-trace的简单工具,它运行一个守护程序线程,每隔N毫秒收集一次堆栈跟踪.

但是解释器本身的信号处理有一个缺点:

虽然就Python用户而言,Python信号处理程序是异步调用的,但它们只能出现在Python解释器的"原子"指令之间.这意味着在纯C中实现的长计算期间到达的信号(例如大文本上的正则表达式匹配)可能会延迟一段任意时间.

资料来源:https://docs.python.org/2/library/signal.html

我怎么能解决上面的约束并得到一个堆栈跟踪,即使解释器在某些C代码中持续几秒钟?

相关:https://github.com/23andMe/djdt-flamegraph/issues/5

gue*_*tli 7

我现在将py-spyspeedscope一起使用。这是一个非常酷的组合。

speedscope-view-of-py-spy-data

py-spy 适用于 Windows/Linux/macOS,可以自己输出火焰图并主动部署,例如。2019 年 10 月添加了子流程分析支持。


Mar*_*nas 5

你试过Pyflame吗?它基于ptrace,因此它不应受CPython的信号处理细微差别的影响.