介绍
profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述。
Python中含有3个模块提供这样的功能,分别是cProfile,profile和pstats。这些分析器提供的是对Python程序的确定性分析。同时也提供一系列的报表生成工具,允许用户快速地检查分析结果。
Python标准库提供了3个不同的性能分析器:
- cProfile,推荐给大部分的用户,是C的一个扩展应用,因为其合理的运行开销,所以适合分析运行时间较长的。是基于lsprof。
- profile,一个纯python模块,它的接口和cProfile一致。在分析程序时,增加了很大的运行开销。如果你想扩展profiler的功能,可以试着继承这个模块
- hotshot, 一个试验性的c模块,关注减少分析时的运行开销,但是是以需要更长的数据后处理的次数为代价。不过这个模块不再被维护,也有可能在新的python版本中被弃用。
实践
源码
from random import randint
from cProfile import Profile
import pstats
def insert_sort(data):
result=[]
for value in data:
insert_value(result,value)
return result
def insert_value(result,value):
for i,existing in enumerate(result):
if existing &g