Python性能分析——cProfile

cProfile是python内置的模块,是比较常用的性能分析工具,可以非常方便的辅助我们找出程序的性能瓶颈,类似的内置工具还有profile,hotshot,使用方法和cProfile类似。本文重点介绍cProfile几种常用的分析方法。

直接针对一个文件进行分析: python -m cProfile test.py,-m表示运行一个模块,这里直接运行了cProfile模块,对test.py进行性能分析,分析结果直接输出到控制台中,还可以通过-o参数将结果输出到指定文件中。

很多情况下,我们可能需要对一块具体的代码进行分析,可以这么做:

# 在代码中嵌入cProfile模块相关分析代码
from cProfile import Profile  
p = Profile()  
p.enable()  
# your code ...
p.disable()  
p.print_stats()  

分析结果:

         1866 function calls (1862 primitive calls) in 0.286 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        9    0.000    0.000    0.000    0.000 <string>:8(__new__)
       11    0.000    0.000    0.001    0.000 Queue.py:107(put)
       12    0.000    0.000    0.000    0.000 Queue.py:150(get)

其中

ncalls:表示调用次数  
tottime:表示不包括子函数调用的总耗时  
cumtime:是包含子函数的调用耗时