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

例如:

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

vs.

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

当前回答

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

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

其他回答

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()

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

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

一个小测试案例:

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

从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模块用于对代码段进行基准测试。

简单回答:在Python中使用time.clock()进行计时。

在*nix系统上,clock()返回处理器时间为浮点数,以秒表示。在Windows上,它以浮点数的形式返回自第一次调用此函数以来所经过的秒数。

time()返回自纪元以来的秒数,以UTC为单位,作为浮点数。不能保证您将获得比1秒更好的精度(即使time()返回一个浮点数)。还要注意,如果在两次调用该函数之间设置了系统时钟,那么第二次函数调用将返回一个较低的值。

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

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