我需要捕获一些python性能分析数据并生成报告。
虽然这个组件的大部分都运行Python 3.5,但为了支持几个遗留模块,我们仍然有部分系统运行2.7。
在这种情况下,3.5通过subprocess.Popen()
调用2.7并捕获stdout
和stderr
(分别作为数据和日志)。
我可以在2.7进程中运行cProfile,将结果数据写入磁盘,然后将其加载到pStats中。
此时,我可以对控制台进行排序/过滤和打印。不幸的是,由于stdout
/ stderr
已在使用中,因此没有多大帮助。
我也更喜欢格式化,注入源代码片段等等。
所以我需要以编程方式查询pStats类,构建一个合适的报告,然后将其存储在我们的消息系统中。
该文档似乎没有表明任何方式提取其他写入控制台的数据。
.stats
属性看起来很有前途,但只包含一个3元组数组,它们省略了很多信息。
如何以编程方式浏览pStats中的数据?
具体来说,我想提取至少:
答案 0 :(得分:1)
严格来说,这不是一个完整的答案,但是您可能想查看SnakeViz库(我不隶属于该库)。他们对cProfile输出进行了可视化处理,这大概意味着它们具有您可能会劫持的解析器。