在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)
当前回答
有一件事要记住: 修改系统时间会影响time.time(),但不会影响time.clock()。
我需要控制一些自动测试的执行。如果测试用例的一个步骤所花费的时间超过了给定的时间量,那么该TC就会中止以继续进行下一个步骤。
但是有时需要一个步骤来更改系统时间(检查被测试应用程序的调度器模块),因此在几个小时后设置系统时间后,TC超时,测试用例被终止。我必须从time.time()切换到time.clock()来正确处理这个问题。
其他回答
这取决于你在乎什么。如果您指的是WALL TIME(即墙上时钟上的时间),则TIME .clock()不能提供精度,因为它可能管理CPU时间。
这种差异是平台特有的。
例如,clock()在Windows上与Linux上有很大不同。
对于您描述的这类示例,您可能希望使用"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()。
有一件事要记住: 修改系统时间会影响time.time(),但不会影响time.clock()。
我需要控制一些自动测试的执行。如果测试用例的一个步骤所花费的时间超过了给定的时间量,那么该TC就会中止以继续进行下一个步骤。
但是有时需要一个步骤来更改系统时间(检查被测试应用程序的调度器模块),因此在几个小时后设置系统时间后,TC超时,测试用例被终止。我必须从time.time()切换到time.clock()来正确处理这个问题。