Python的time.clock()与time.time()的精度?

455 投票
16 回答
485725 浏览
提问于 2025-04-11 09:15

在Python中,使用哪个函数来计时更好呢?是time.clock()还是time.time()?哪个更准确呢?

比如说:

start = time.clock()
... do something
elapsed = (time.clock() - start)

start = time.time()
... do something
elapsed = (time.time() - start)

16 个回答

25

其他人已经回答了关于 time.time()time.clock() 的问题。

不过,如果你是想测量一段代码执行的时间,以便进行性能测试或者基准测试,那你应该看看 timeit 模块

50

简单来说,大多数情况下,使用 time.clock() 会更好。不过,如果你是在测量一些硬件的时间(比如你放在GPU上的某个算法),那么 time.clock() 就不适用了,这时候只能用 time.time()

注意:无论你用哪种方法,测量的时间都会受到一些你无法控制的因素影响(比如进程切换的时间、频率等等)。使用 time.time() 时这种影响会更明显,但 time.clock() 也会有,所以你绝对不要只做一次测量,而是要进行一系列测试,然后看看这些时间的平均值和变化情况。

180

从3.3版本开始,time.clock()这个函数已经不推荐使用,建议用time.process_time()或者time.perf_counter()来代替。

在2.7版本时,根据time模块的文档

time.clock()

在Unix系统上,这个函数会返回当前处理器的时间,结果是一个以秒为单位的浮点数。这个时间的精确度,以及“处理器时间”的具体定义,取决于同名的C语言函数。不过总的来说,这个函数是用来测试Python性能或计算算法时间的最佳选择。

在Windows系统上,这个函数会返回自第一次调用这个函数以来经过的实际时间,结果也是一个浮点数,基于Win32的QueryPerformanceCounter()函数。通常情况下,它的精度可以达到微秒级别。

此外,还有一个timeit模块可以用来测试代码片段的性能。

撰写回答