以编程方式访问 cProfile 数据
Programmatically accessing cProfile data
我需要捕获一些 python 分析数据并生成报告。
虽然这个组件的大部分 运行s Python 3.5,为了支持几个遗留模块,我们仍然有部分系统 运行s 2.7。
在此实例中,3.5 通过 subprocess.Popen()
调用 2.7 并捕获 stdout
和 stderr
(分别用作数据和日志)。
我能够在 2.7 进程中 运行 cProfile,将生成的数据写入磁盘,并将其加载到 pStats。
此时,我可以 sort/filter 并打印到控制台。不幸的是,由于 stdout
/stderr
已经在使用中,这没什么用。
我也希望有机会格式化、注入源代码片段等
所以我需要以编程方式查询 pStats class,建立一个合适的报告,然后将其存储在我们的消息系统中。
该文档似乎没有说明除写入控制台之外的任何提取数据的方法。
.stats
属性 看起来很有希望,但只包含一个三元组数组,省略了很多信息。
如何以编程方式浏览 pStats 中的数据?
具体来说,我想至少提取:
- 来源file/line个数
- 累计时间
- 独家时间
严格来说,这不是一个完整的答案,但您可能想查看 SnakeViz 库(我不隶属于该库)。他们对 cProfile 输出做了一些可视化,这大概意味着他们有一个解析器,你可以劫持。
我需要捕获一些 python 分析数据并生成报告。
虽然这个组件的大部分 运行s Python 3.5,为了支持几个遗留模块,我们仍然有部分系统 运行s 2.7。
在此实例中,3.5 通过 subprocess.Popen()
调用 2.7 并捕获 stdout
和 stderr
(分别用作数据和日志)。
我能够在 2.7 进程中 运行 cProfile,将生成的数据写入磁盘,并将其加载到 pStats。
此时,我可以 sort/filter 并打印到控制台。不幸的是,由于 stdout
/stderr
已经在使用中,这没什么用。
我也希望有机会格式化、注入源代码片段等
所以我需要以编程方式查询 pStats class,建立一个合适的报告,然后将其存储在我们的消息系统中。
该文档似乎没有说明除写入控制台之外的任何提取数据的方法。
.stats
属性 看起来很有希望,但只包含一个三元组数组,省略了很多信息。
如何以编程方式浏览 pStats 中的数据?
具体来说,我想至少提取:
- 来源file/line个数
- 累计时间
- 独家时间
严格来说,这不是一个完整的答案,但您可能想查看 SnakeViz 库(我不隶属于该库)。他们对 cProfile 输出做了一些可视化,这大概意味着他们有一个解析器,你可以劫持。