在Python中获取计时器滴答声

时间:2020-03-06 14:57:43  来源:igfitidea点击:

我只是在尝试计时一段代码。伪代码如下所示:

start = get_ticks()
do_long_code()
print "It took " + (get_ticks() - start) + " seconds."

在Python中看起来如何?

更具体地说,如何获取自午夜以来的滴答数(或者Python组织该计时)?

解决方案

我们需要的是来自time模块的time()函数:

import time
start = time.time()
do_long_code()
print "it took", time.time() - start, "seconds."

我们可以使用timeit模块获取更多选项。

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

python中的时间模块使我们可以访问clock()函数,该函数以秒为单位返回时间作为浮点数。

不同的系统根据其内部时钟设置(每秒滴答数)将具有不同的精度,但通常至少在20毫秒以下,在某些情况下要好于几微秒。

-亚当

在"时间"模块中,有两个计时功能:"时间"和"时钟"。如果我们关心的是时间,那么"时间"会给我们"闲逛"的时间。

但是,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)小1,因此更有意义:
# linux
    t0= time.clock()
    do_something()
    t= time.clock() - t0 # t is CPU seconds elapsed (floating point)

除此之外,timeit模块还具有" Timer"类,该类应该使用可用功能中最适合进行基准测试的类。

1,除非线程妨碍

2 Python 3.3:有time.perf_counter()time.process_time()。 " timeit"模块正在使用" perf_counter"。