在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"。