
在上一篇中,介绍使用cProfile模块对程序进行可视化性能分析主要是借助于Gprof2Dot来将分析器输出转换成 Graphviz 可处理的图像表述,我们就可以从图里分享相关的即可得到不同函数所消耗的时间分布信息。
换一个思路,如果我想使用火焰图,来展示我们的相关的调用链和堆栈信息是否可以呢?我们知道火焰图是基于 perf 结果产生的 SVG 图片,用来展示 CPU 的调用栈。
如何使用cProfile模块生成的文件来进行火焰图的呢?答案就是可以借助:flameprof 第三方包。
官网:https://github.com/baverman/flameprof
pip install flameprof
PS:和Graphviz一样的如果安装上了还是无效的话,直接下载源码放置本地上进行运行也可以滴。
(.venv) PS D:\code\vscode\py> flameprof .\result.out >csadsad.png
(.venv) PS D:\code\vscode\py>
PS:如果是下载源码的方式拖到到本地的话,使用下面的命令:
python flameprof.py input.prof > output.svg如果是使用pip install flameprof安装的话,使用:
flameprof .\result.out >csadsad.png
可以添加其他的参数用于设置图形宽度、行高、字体大小和阈值 选项
SVG文件可以查看的信息有:
相关的图解:
图分成上下两部分,
上部的图是按照函数调用栈和执行时间排列。
下部反方向的图按照函数执行时间比例从大到小排列。
上部的图中execute是最顶层的函数,往上是它调用的子函数,直到调用链最底层的函数。
宽度表示每个函数的执行时间占用的比例,越宽表示越耗时。
部分的图或资料来互联网收集整理,如有侵权,烦请联系,我会立即进行删除。
纯属个人实践中相关经验之谈,如有纰漏,还希望大佬们多多提点!小钟同学 | 文 【原创】| QQ:308711822
原文作者:程序员小钟同学;如有侵权,请联系管理员删除。