在Python中使用哪个更好?Time.clock()还是time.time()?哪一种更准确?
例如:
start = time.clock()
... do something
elapsed = (time.clock() - start)
vs.
start = time.time()
... do something
elapsed = (time.time() - start)
在Python中使用哪个更好?Time.clock()还是time.time()?哪一种更准确?
例如:
start = time.clock()
... do something
elapsed = (time.clock() - start)
vs.
start = time.time()
... do something
elapsed = (time.time() - start)
当前回答
在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
其他回答
其他人回答了re: time.time() vs. time.clock()。
但是,如果您是为了基准测试/分析目的而对代码块的执行进行计时,则应该查看timeit模块。
从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模块用于对代码段进行基准测试。
在Unix上,time.clock()测量当前进程已使用的CPU时间量,因此它不适用于测量从过去某个点开始的流逝时间。在Windows上,它将测量自第一次调用函数以来所经过的时钟秒数。在任意一个系统上,time.time()将返回自epoch以来经过的秒数。
如果您正在编写仅用于Windows的代码,则两者都可以工作(尽管您将使用不同的方法- time.clock()不需要减法)。如果要在Unix系统上运行,或者您想要保证可移植的代码,则需要使用time.time()。
对比Ubuntu Linux和Windows 7的测试结果。
在Ubuntu上
>>> start = time.time(); time.sleep(0.5); (time.time() - start)
0.5005500316619873
Windows 7操作系统
>>> start = time.time(); time.sleep(0.5); (time.time() - start)
0.5
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()