我只想尝试一段代码。伪代码看起来像:
start = get_ticks()
do_long_code()
print "It took " + (get_ticks() - start) + " seconds."
这在Python中看起来如何?
更具体地说,我如何得到午夜以来的滴答数(或者Python组织那个时间)?
答案 0 :(得分:34)
在time
模块中,有两个计时功能:time
和clock
。 time
给你“墙”时间,如果这是你关心的。
然而,python docs说clock
应该用于基准测试。请注意clock
在不同的系统中表现不同:
clock
时开始计算)。# ms windows t0= time.clock() do_something() t= time.clock() - t0 # t is wall seconds elapsed (floating point)
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()
and time.process_time()
。 perf_counter
模块正在使用timeit
。
答案 1 :(得分:31)
您需要的是来自time()
模块的time
函数:
import time
start = time.time()
do_long_code()
print "it took", time.time() - start, "seconds."
您可以使用timeit模块获取更多选项。
答案 2 :(得分:2)
import datetime
start = datetime.datetime.now()
do_long_code()
finish = datetime.datetime.now()
delta = finish - start
print delta.seconds
从午夜开始:
import datetime
midnight = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
now = datetime.datetime.now()
delta = now - midnight
print delta.seconds
答案 3 :(得分:2)
python中的time module使您可以访问clock()函数,该函数以秒为单位返回时间作为浮点。
不同的系统将根据其内部时钟设置(每秒滴答数)具有不同的准确度,但通常至少低于20毫秒,在某些情况下优于几微秒。
- 亚当
答案 4 :(得分:0)
如果您有许多想要时间的陈述,可以使用以下内容:
class Ticker:
def __init__(self):
self.t = clock()
def __call__(self):
dt = clock() - self.t
self.t = clock()
return 1000 * dt
然后你的代码看起来像:
tick = Ticker()
# first command
print('first took {}ms'.format(tick())
# second group of commands
print('second took {}ms'.format(tick())
# third group of commands
print('third took {}ms'.format(tick())
这样您就不需要在每个块之前键入t = time()
并在其之后键入1000 * (time() - t)
,同时仍然可以控制格式化(尽管您也可以轻松地将其放在Ticket
中)
这是一个微不足道的收获,但我认为这很方便。