如何在Python中测量经过时间?
我想测量一个函数执行的时间。但是我没能让timeit
这个工具正常工作:
import timeit
start = timeit.timeit()
print("hello")
end = timeit.timeit()
print(end - start)
41 个回答
仅适用于Python 3:
因为从Python 3.3开始,time.clock()
这个函数已经不再推荐使用了,所以你应该用time.perf_counter()
来进行系统级的时间测量,或者用time.process_time()
来进行进程级的时间测量,就像你以前使用time.clock()
那样:
import time
t = time.process_time()
#do some stuff
elapsed_time = time.process_time() - t
新的函数process_time
不会计算在休眠期间消耗的时间。
使用 timeit.default_timer
而不是 timeit.timeit
。前者会自动为你选择在你所用的平台和Python版本上最好的计时器:
from timeit import default_timer as timer
start = timer()
# ...
end = timer()
print(end - start) # Time in seconds, e.g. 5.38091952400282
timeit.default_timer 会根据操作系统选择 time.time()
或 time.clock()
。在Python 3.3及以上版本中,default_timer 在所有平台上都是 time.perf_counter()。想了解更多,可以查看 Python - time.clock() 和 time.time() 的准确性比较。
另外可以参考:
使用 time.time()
可以测量两个时间点之间的实际经过时间:
import time
start = time.time()
print("hello")
end = time.time()
print(end - start)
这个方法会返回执行时间,单位是秒。
如果你使用的是Python 3.3及以上版本,另一个选择是使用 perf_counter
或 process_time
,具体取决于你的需求。在3.3之前,推荐使用 time.clock
(感谢 Amber)。不过,这个方法现在已经不推荐使用了:
在Unix系统上,这个函数返回当前的处理器时间,以浮点数表示,单位是秒。精度,以及“处理器时间”的定义,取决于同名的C语言函数。
在Windows系统上,这个函数返回自第一次调用该函数以来经过的实际秒数,以浮点数表示,基于Win32函数
QueryPerformanceCounter()
。通常情况下,精度会好于一微秒。自3.3版本起不推荐使用:这个函数的行为依赖于平台:请根据你的需求使用
perf_counter()
或process_time()
,以确保行为明确。