Python的time.clock()与time.time()的精度?
在Python中,使用哪个函数来计时更好呢?是time.clock()还是time.time()?哪个更准确呢?
比如说:
start = time.clock()
... do something
elapsed = (time.clock() - start)
和
start = time.time()
... do something
elapsed = (time.time() - start)
16 个回答
其他人已经回答了关于 time.time()
和 time.clock()
的问题。
不过,如果你是想测量一段代码执行的时间,以便进行性能测试或者基准测试,那你应该看看 timeit
模块。
简单来说,大多数情况下,使用 time.clock()
会更好。不过,如果你是在测量一些硬件的时间(比如你放在GPU上的某个算法),那么 time.clock()
就不适用了,这时候只能用 time.time()
。
注意:无论你用哪种方法,测量的时间都会受到一些你无法控制的因素影响(比如进程切换的时间、频率等等)。使用 time.time()
时这种影响会更明显,但 time.clock()
也会有,所以你绝对不要只做一次测量,而是要进行一系列测试,然后看看这些时间的平均值和变化情况。
从3.3版本开始,time.clock()这个函数已经不推荐使用,建议用time.process_time()或者time.perf_counter()来代替。
在2.7版本时,根据time模块的文档:
time.clock()
在Unix系统上,这个函数会返回当前处理器的时间,结果是一个以秒为单位的浮点数。这个时间的精确度,以及“处理器时间”的具体定义,取决于同名的C语言函数。不过总的来说,这个函数是用来测试Python性能或计算算法时间的最佳选择。
在Windows系统上,这个函数会返回自第一次调用这个函数以来经过的实际时间,结果也是一个浮点数,基于Win32的QueryPerformanceCounter()函数。通常情况下,它的精度可以达到微秒级别。
此外,还有一个timeit模块可以用来测试代码片段的性能。