4

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

虽然这个组件的大部分运行 Python 3.5,为了支持几个遗留模块,我们仍然有部分系统运行 2.7。

在这种情况下,3.5 通过调用 2.7subprocess.Popen()并同时捕获stdoutstderr(分别用作数据和日志)。

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

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

我还希望有机会格式化、注入源代码片段等。

所以我需要以编程方式查询 pStats 类,建立一个合适的报告,然后将它存储在我们的消息传递系统中。

除了写入控制台之外,该文档似乎没有说明提取数据的任何方法。

.stats属性看起来很有希望,但仅包含一个省略大量信息的 3 元组数组。

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

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

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

1 回答 1

1

严格来说不是一个完整的答案,但您可能想查看SnakeViz库(我不隶属于该库)。他们对 cProfile 输出进行了一些可视化,这可能意味着他们有一个您可能能够劫持的解析器。

于 2019-02-21T11:15:13.397 回答