【发布时间】:2012-09-08 18:27:08
【问题描述】:
基本上,我希望能够输出应用程序运行所经过的时间。我想我需要使用某种 timeit 函数,但我不确定是哪一个。我正在寻找类似以下的内容...
START MY TIMER
code for application
more code
more code
etc
STOP MY TIMER
OUTPUT ELAPSED TIME 在定时器的启动和停止之间执行上述代码。想法?
【问题讨论】:
基本上,我希望能够输出应用程序运行所经过的时间。我想我需要使用某种 timeit 函数,但我不确定是哪一个。我正在寻找类似以下的内容...
START MY TIMER
code for application
more code
more code
etc
STOP MY TIMER
OUTPUT ELAPSED TIME 在定时器的启动和停止之间执行上述代码。想法?
【问题讨论】:
最简单的方法是把:
import time
start_time = time.time()
一开始
print "My program took", time.time() - start_time, "to run"
在最后。
【讨论】:
要在不同平台上获得最佳效果:
from timeit import default_timer as timer
# START MY TIMER
start = timer()
code for application
more code
more code
etc
# STOP MY TIMER
elapsed_time = timer() - start # in seconds
timer() 在 Python 3.3 中是 time.perf_counter(),在 Windows/其他平台上的旧版本中是 time.clock()/time.time()。
【讨论】:
如果您运行的是 Mac OS X 或 Linux,只需使用 time 实用程序:
$ time python script.py
real 0m0.043s
user 0m0.027s
sys 0m0.013s
如果没有,请使用time 模块:
import time
start_time = time.time()
# ...
print time.time() - start_time, 's'
【讨论】:
你可以使用系统命令time:
foo@foo:~# time python test.py
hello world!
real 0m0.015s
user 0m0.008s
sys 0m0.007s
【讨论】:
在程序开始时取系统当前时间,最后再取程序结束时间,最后减去两次。
以下代码描述了我们如何执行上述操作:
import time
start = time.time()
示例代码从这里开始
cnt = 1
for fun in range(10**11):
if (fun % 10**9 == 0):
print(cnt, fun)
cnt += 1
示例代码到此结束
end = time.time()
print('Time taken for fun program: ', end - start)
希望这永远清楚。
【讨论】:
你不能在开始和结束时获取当前系统时间,然后从最终时间中减去开始时间吗?
【讨论】: