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

例如:

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

vs.

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

当前回答

我使用这段代码来比较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

其他回答

我使用这段代码来比较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

据我所知,time.clock()具有系统所允许的最大精度。

简单的答案是:大多数时候time.clock()会更好。 然而,如果你正在为某些硬件计时(例如你在GPU中放入的某些算法),那么time.clock()将摆脱这个时间,而time.time()是唯一剩下的解决方案。

注意:无论使用何种方法,计时将取决于您无法控制的因素(进程何时切换,频率如何,……),这对于time.time()来说更糟糕,但对于time.clock()也存在,因此您永远不应该只运行一个计时测试,而是始终运行一系列测试并查看时间的均值/方差。

time.clock()在Python 3.8中被移除,因为它具有平台相关的行为:

在Unix上,返回以秒表示的浮点数形式的当前处理器时间。 在Windows上,此函数以浮点数的形式返回自第一次调用该函数以来经过的时钟秒数 打印(time.clock ());time . sleep (10);print (time.clock ()) # Linux: 0.0382 0.0384 #参见处理器时间 # Windows: 26.1224 36.1566 #见clock Time

那么选择哪个函数呢?

Processor Time: This is how long this specific process spends actively being executed on the CPU. Sleep, waiting for a web request, or time when only other processes are executed will not contribute to this. Use time.process_time() Wall-Clock Time: This refers to how much time has passed "on a clock hanging on the wall", i.e. outside real time. Use time.perf_counter() time.time() also measures wall-clock time but can be reset, so you could go back in time time.monotonic() cannot be reset (monotonic = only goes forward) but has lower precision than time.perf_counter()

在Linux上,time()比clock()具有更好的精度。Clock()的精度小于10毫秒。而time()提供完美的精度。 我的测试用的是CentOS 6.4和python 2.6

using time():

1 requests, response time: 14.1749382019 ms
2 requests, response time: 8.01301002502 ms
3 requests, response time: 8.01491737366 ms
4 requests, response time: 8.41021537781 ms
5 requests, response time: 8.38804244995 ms

使用时钟():

1 requests, response time: 10.0 ms
2 requests, response time: 0.0 ms 
3 requests, response time: 0.0 ms
4 requests, response time: 10.0 ms
5 requests, response time: 0.0 ms 
6 requests, response time: 0.0 ms
7 requests, response time: 0.0 ms 
8 requests, response time: 0.0 ms