性能优化首先要知道程序的性能瓶颈在哪里,python已经提供了profile工具可以看出哪些函数耗时较长。本文介绍的火焰图会以图的形式给出程序更直观的函数调用及开销,这里将介绍的是Uber开源的python火焰图工具pyflame。
首先给出一个直观的火焰图
可以很形象的看出函数调用耗时情况,横向越宽说明耗时越长,从下往上看,最下面表示程序从开始到结束总的耗时。从下往上是一级级函数的调用情况。
pyflame安装(以ubuntu为例)
对Debian/Ubuntu/Fedora系统支持的比较好,centos6参考。
- 依赖安装1$ sudo apt-get install autoconf automake autotools-dev g++ pkg-config python-dev python3-dev libtool make
编译安装
123./autogen.sh./configure # Plus any options like --prefix.make生成的pyflame工具位于src目录下,可以将其放到/usr/local/bin目录下
火焰图生成工具
火焰图github, 主要使用脚本flamegraph.pl,可以将其放到/usr/local/bin目录下
pyflame使用
|
|
- -s 指定pyflame运行时间
- -r 抽样频率
- -o 抽样数据输出
- –abi option to force a particular Python ABI.(uwsgi可能会用到这个选项)