python – 以编程方式访问cProfile数据

我需要捕获一些
python性能分析数据并生成报告.

虽然这个组件的大部分都运行Python 3.5,但为了支持几个传统模块,我们仍然拥有运行2.7的系统的一部分.

在这个例子中,3.5通过subprocess.Popen()调用2.7并捕获stdout和stderr(分别用作数据和日志).

我能够在2.7进程中运行cProfile,将结果数据写入磁盘,并将其加载到pStats中.

此时,我可以对控制台进行排序/过滤和打印.不幸的是,由于stdout / stderr已经在使用,这没有多大帮助.

我也更喜欢格式化,注入源代码片段等.

因此,我需要以编程方式查询pStats类,构建合适的报告,然后将其存储在我们的消息传递系统中.

该文档似乎没有表明任何方式提取其他写入控制台的数据.

.stats属性看起来很有前途但只包含一个3元组的数组,它省略了很多信息.

如何以编程方式浏览pStats中的数据?

具体来说,我想提取至少:

>源文件/行号
>累计时间
>独家时间

最佳答案 不完全是一个完整的答案,但您可能想查看
SnakeViz库(我不隶属于该库).他们对cProfile输出做了一些可视化,这可能意味着他们有一个你可能能够劫持的解析器.

点赞