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

例如:

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

vs.

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

当前回答

在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位浮点数,如果不存储第一个/最后一个值,就不能继续计数。不能合并另一个计数器…

我使用这段代码来比较2种方法。我的操作系统是windows 8,处理器核心i5, RAM 4GB

import time

def t_time():
    start=time.time()
    time.sleep(0.1)
    return (time.time()-start)


def t_clock():
    start=time.clock()
    time.sleep(0.1)
    return (time.clock()-start)




counter_time=0
counter_clock=0

for i in range(1,100):
    counter_time += t_time()

    for i in range(1,100):
        counter_clock += t_clock()

print "time() =",counter_time/100
print "clock() =",counter_clock/100

输出:

time() = 0.0993799996376

clock() = 0.0993572257367

这取决于你在乎什么。如果您指的是WALL TIME(即墙上时钟上的时间),则TIME .clock()不能提供精度,因为它可能管理CPU时间。

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

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

Clock() ->浮点数

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

Time() ->浮点数

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

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