在Python中使用哪个更好?Time.clock()还是time.time()?哪一种更准确?

例如:

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

vs.

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

当前回答

从3.3开始,time.clock()已弃用,建议使用time.process_time()或time.perf_counter()。

在2.7之前,根据time模块docs:

time.clock() On Unix, return the current processor time as a floating point number expressed in seconds. The precision, and in fact the very definition of the meaning of “processor time”, depends on that of the C function of the same name, but in any case, this is the function to use for benchmarking Python or timing algorithms. On Windows, this function returns wall-clock seconds elapsed since the first call to this function, as a floating point number, based on the Win32 function QueryPerformanceCounter(). The resolution is typically better than one microsecond.

此外,还有timeit模块用于对代码段进行基准测试。

其他回答

Clock() ->浮点数

返回CPU时间或进程启动后的实时时间 第一次调用clock()。这和系统的精度一样高 记录。

Time() ->浮点数

返回当前时间(以秒为单位)。 如果系统时钟提供,可能会出现几分之一秒。

通常time()更精确,因为操作系统存储进程运行时间的精度与存储系统时间(即实际时间)的精度不同。

这种差异是平台特有的。

例如,clock()在Windows上与Linux上有很大不同。

对于您描述的这类示例,您可能希望使用"timeit"模块。

在Unix上,time.clock()测量当前进程已使用的CPU时间量,因此它不适用于测量从过去某个点开始的流逝时间。在Windows上,它将测量自第一次调用函数以来所经过的时钟秒数。在任意一个系统上,time.time()将返回自epoch以来经过的秒数。

如果您正在编写仅用于Windows的代码,则两者都可以工作(尽管您将使用不同的方法- time.clock()不需要减法)。如果要在Unix系统上运行,或者您想要保证可移植的代码,则需要使用time.time()。

正确答案:它们都是相同长度的分数。

但如果主题是时间,哪个更快?

一个小测试案例:

import timeit
import time

clock_list = []
time_list = []

test1 = """
def test(v=time.clock()):
    s = time.clock() - v
"""

test2 = """
def test(v=time.time()):
    s = time.time() - v
"""
def test_it(Range) :
    for i in range(Range) :
        clk = timeit.timeit(test1, number=10000)
        clock_list.append(clk)
        tml = timeit.timeit(test2, number=10000)
        time_list.append(tml)

test_it(100)

print "Clock Min: %f Max: %f Average: %f" %(min(clock_list), max(clock_list), sum(clock_list)/float(len(clock_list)))
print "Time  Min: %f Max: %f Average: %f" %(min(time_list), max(time_list), sum(time_list)/float(len(time_list)))

我不是在瑞士实验室工作,但我做过测试。

基于这个问题:time.clock()比time.time()更好

编辑:time.clock()是内部计数器,所以不能在外部使用,得到限制最大32位浮点数,如果不存储第一个/最后一个值,就不能继续计数。不能合并另一个计数器…

其他人回答了re: time.time() vs. time.clock()。

但是,如果您是为了基准测试/分析目的而对代码块的执行进行计时,则应该查看timeit模块。