第一种情况:
import cProfile
import re
cProfile.run('re.compile("aaa")')
第二种情况:
import cProfile
import re
cProfile.run('re.compile("aaa|bbb")', 'stats', 'cumtime')
如果你去运行该代码,你会发现没有结果输出,但是生成了一个stats文件,里面是二进制数据。想读取文件,请见后面内容。
run和runtx之间的区别:globals和locals是两个字典参数。
import cProfile
def runRe():
import re
cProfile.run('re.compile("aaa|bbb")')
runRe()
import cProfile
# 这样才对
def runRe():
import re
cProfile.runctx('re.compile("aaa|bbb")', None, locals())
runRe()
from cProfile import Profile
def runRe():
import re
re.compile("aaa|bbb")
prof = Profile()
prof.enable()
runRe()
prof.create_stats()
prof.print_stats()
准则 | 含义 | 升序/降序排列 |
---|---|---|
calls | 调用次数 | 降序 |
cumulative | 累计时间 | 降序 |
cumtime | 累计时间 | 降序 |
file | 文件名 | 升序 |
filename}文件名 | 升序 | |
module | 模块名 | 升序 |
ncalls | 调用总次数 | 降序 |
pcalls | 原始调用书 | 降序 |
line | 行号 | 升序 |
name | 函数名 | 升序 |
nfl | 函数名/文件名/行号组合 | 降序 |
stdname | 标准名称 | 升序 |
time | 函数内部运行时间 | 降序 |
tottime | 函数内部运行总时间 | 降序 |
- reverse_order():这个方法回逆反原来参数的排序。
- print_stats(*restrictions):这个方法把信息打印到STDOUT
- print_callees(*restrictions):打印一列调用其他函数的函数。
import pstats
p = pstats.Stats('stats')
p.strip_dirs().sort_stats(-1).print_stats()
from cProfile import Profile
import pstats
def runRe():
import re
re.compile("aaa|bbb")
prof = Profile()
prof.enable()
runRe()
prof.create_stats()
p = pstats.Stats(prof)
p.print_callees()
pip install line_profiler
在安装过程中遇到问题,比如文件缺失,说明没有安装相关依赖,在Ubuntu中
sudo apt-get install python-dev libxml2-dev libxslt-dev
@profile
def fib(n):
# 文件名aaa.py
a, b = 0, 1
for i in range(0, n):
a, b = b, a+b
return a
fib(5)
终端:kernprof -l aaa.py
kernprof默认情况下会把分析结果写入aaa.py.lprof文件,不过可以用-v显示在命令行里。
kernprof -l -v aaa.py
line_profiler和cProfile一样:也提供了run,runctx,runcall,enable,disable方法,但是后两个并不安全,可以用dump_stats(filename)方法把stats加载到文件中,也可以用print_stats([stream])昂发打印结果。
# coding=utf-8
import line_profiler
import sys
def bbb():
for i in range(0, 3):
print i**2
print 'end'
profile = line_profiler.LineProfiler(bbb) # 把函数传递到性能分析器
profile.enable() # 开始分析
bbb()
profile.disable() # 停止分析
profile.print_stats(sys.stdout) # 打印出性能分析结果