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