#安装
pip install Profile
#引用方法
import Profile
#用法(Profile.run("方法名"))
Profile.run(“function”)
#运行结果字段展示
ncalls |
函数的被调用次数 |
tottime |
函数总计运行时间,除去函数中调用的函数运行时间 |
percall |
函数运行一次的平均时间,等于tottime/ncalls |
cumtime |
函数总计运行时间,含调用的函数运行时间 |
percall |
函数运行一次的平均时间,等于cumtime/ncalls |
filename:lineno(function) |
函数所在的文件名,函数的行号,函数名 |
#然后可以结合pstats模块对函数消耗时间模块进行排序及处理
profile.run("foo()", "记录文件")
#结果保存到文件
p = pstats.Stats("prof.txt")
#结果百分之十然后按time字段排名
p.sort_stats(".1","time").print_stats()
#展示按time字段排名结果百分之十
p.sort_stats("time",".1").print_stats()
#pstats用法
strip_dirs() |
用以除去文件名前名的路径信息。 |
add(filename,[…]) |
把profile的输出文件加入Stats实例中统计 |
dump_stats(filename) |
把Stats的统计结果保存到文件 |
sort_stats(key,[…]) |
最重要的一个函数,用以排序profile的输出 |
sort_stats可接受的参数:
‘ncalls’ |
被调用次数 |
‘cumulative’ |
函数运行的总时间 |
‘file’ |
文件名 |
‘module’ |
文件名 |
‘pcalls’ |
简单调用统计(兼容旧版,未统计递归调用) |
‘line’ |
行号 |
‘name’ |
函数名 |
‘nfl’ |
Name/file/line |
‘stdname’ |
标准函数名 |
‘time’ |
函数内部运行时间(不计调用子函数的时间) |
#还可以结合Hotshot模块进行分析
import hotshot
import hotshot.stats
prof = hotshot.Profile("hs_prof.txt", 1)
prof.runcall(foo)
prof.close()
p = hotshot.stats.load("hs_prof.txt")
p.print_stats()