rank vote view answer url
94 1006 377869 23 url

如何测量脚本运行时间?

我在Project Euler发现好多这样的问题,许多其他地方也问怎么测量执行时间.但是有的时候答案有点kludgey-比如,在__main__中加入时间代码,所以我想在这里分享一下解决方案.


Python自带了一个叫cProfile的分析器.它不仅实现了计算整个时间,而且单独计算每个函数运行时间,并且告诉你这个函数被调用多少次,它可以很容易的确定你要优化的值.

你可以在你的代码里或是交互程序里调用,像下面这样:

import cProfile
cProfile.run('foo()')

更有用的是,你可以在运行脚本的时候用cProfile:

python -m cProfile myscript.py

为了使用更简单,我做了一个小脚本名字叫profile.bat:

python -m cProfile %1

所以我可以这么调用了:

profile euler048.py

下面是结果:

1007 function calls in 0.061 CPU seconds

Ordered by: standard name
ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    1    0.000    0.000    0.061    0.061 <string>:1(<module>)
 1000    0.051    0.000    0.051    0.000 euler048.py:2(<lambda>)
    1    0.005    0.005    0.061    0.061 euler048.py:2(<module>)
    1    0.000    0.000    0.061    0.061 {execfile}
    1    0.002    0.002    0.053    0.053 {map}
    1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler objects}
    1    0.000    0.000    0.000    0.000 {range}
    1    0.003    0.003    0.003    0.003 {sum}

注:更新一个来自PyCon2013的视频网址: http://lanyrd.com/2013/pycon/scdywg/