以编程方式访问cProfile数据

4
我需要捕获一些Python性能分析数据并生成报告。
虽然大部分组件都运行在Python 3.5上,但为了支持几个旧模块,我们仍有部分系统运行在2.7上。
在这种情况下,3.5通过subprocess.Popen()调用2.7,并捕获stdoutstderr(分别用作数据和日志)。
我可以在2.7进程内运行cProfile,将生成的数据写入磁盘,并加载到pStats中。
此时,我可以进行排序/过滤并打印到控制台。不幸的是,由于stdout/stderr已经被使用,这对我没有太大帮助。
我还想有机会格式化、注入源代码片段等。
因此,我需要以编程方式询问pStats类,构建适当的报告,然后将其存储在我们的消息系统中。
文档似乎没有指示除了写入控制台之外提取数据的方法。 .stats属性看起来很有前途,但只包含省略了许多信息的3元组数组。
我如何以编程方式浏览pStats中的数据?
具体而言,我希望至少提取以下内容:
- 源文件/行号 - 累积时间 - 独占时间
1个回答

1

虽然不是完整的答案,但你或许想要检查一下SnakeViz库(我与其没有关联)。他们做了一些cProfile输出的可视化,这意味着他们可能有一个解析器,你可以借用它。


谢谢,这让我找到了这个链接:https://github.com/jiffyclub/snakeviz/blob/4b5ffeec596db4462d4ff219151832951d273bf4/snakeviz/stats.py#L9 - Basic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接