def bar():
result = 0
for i in range(1000000):
result += i
return result
def foo():
result = 0
for i in range(100000):
result += i
for i in range(5):
bar()
return result
if __name__ == '__main__':
import cProfile
# 直接把分析结果打印到控制台
cProfile.run("foo()")
# 根据cumtime列排序后打印到控制台,
# 也就是说按包含子函数执行的时间顺序进行排序
cProfile.run("foo()", sort="cumulative")
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.278 0.278 <string>:1(<module>)
1 0.005 0.005 0.278 0.278 foobar.py:13(foo)
5 0.207 0.041 0.270 0.054 foobar.py:6(bar)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
7 0.066 0.009 0.066 0.009 {range}
15 function calls in 0.229 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.229 0.229 <string>:1(<module>)
1 0.004 0.004 0.229 0.229 foobar.py:13(foo)
5 0.188 0.038 0.225 0.045 foobar.py:6(bar)
7 0.037 0.005 0.037 0.005 {range}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
本系列文章和代码已经作为项目归档到github,仓库地址:jumper2014/PyCodeComplete。大家觉得有帮助就请在github上star一下,你的支持是我更新的动力。什么?你没有github账号?学习Python怎么可以没有github账号呢,快去注册一个啦!