我只想尝试一段代码.伪代码看起来像:
start = get_ticks() do_long_code() print "It took " + (get_ticks() - start) + " seconds."
这看起来如何用Python?
更具体地说,我如何得到午夜以来的滴答数(或者Python组织那个时间)?
在time
模块中,有两个定时功能:time
和clock
.time
给你"墙"时间,如果这是你关心的.
但是,python 文档说clock
应该用于基准测试.请注意,clock
在不同的系统中行为不同:
在MS Windows上,它使用Win32函数QueryPerformanceCounter(),"分辨率通常优于微秒".它没有特殊含义,它只是一个数字(它会clock
在您第一次调用过程中开始计算).
# ms windows t0= time.clock() do_something() t= time.clock() - t0 # t is wall seconds elapsed (floating point)
在*nix上,clock
报告CPU时间.现在,这是不同的,并且很可能是您想要的值,因为您的程序几乎不是唯一请求CPU时间的进程(即使您没有其他进程,内核时不时地使用CPU时间).因此,这个数字通常小于壁时间(即time.time() - t0),在对代码进行基准测试时更有意义:
# linux t0= time.clock() do_something() t= time.clock() - t0 # t is CPU seconds elapsed (floating point)
除此之外,timeit模块还有一个Timer
类,它应该使用最好的功能来进行基准测试.
¹除非线程妨碍...
²Python≥3.3:有time.perf_counter()
和time.process_time()
.perf_counter
正在被timeit
模块使用.
你需要的是模块的time()
功能time
:
import time start = time.time() do_long_code() print "it took", time.time() - start, "seconds."
您可以使用timeit模块获得更多选项.