即使它们已被弃用且存在比time
(即timeit
)更好的模块,我想知道两个函数time.clock()
和time.time()
之间的差异。了解time.clock()和time.time()
从后者开始(time.time()
),它基本上以秒为单位返回从1970年1月1日(如果我没有错的话)流逝的时间,精度通常为1秒。 '直到这里很容易。
相反,time.clock()
还是让我感到困惑。 来自文档:
在Unix上,返回当前处理器时间作为以秒为单位的浮点数。精确性,实际上“处理器时间”含义的定义取决于具有相同名称的C函数的精确性,但无论如何,这是用于基准测试Python或时序算法的函数。
在Windows中,此函数返回自第一次调用该函数经过挂钟秒,作为一个浮点数,基于Win32函数QueryPerformanceCounter的()。分辨率通常优于1微秒。
现在在Windows中很清楚,它的确如time.time()
所做的那样,只是精度更高。
但在Unix/Linux下我无法理解。我尝试下面的代码:
import time
def procedure():
time.sleep(2.5)
# measure process time
t0 = time.clock()
procedure()
print(time.clock() - t0, "process time")
和我5.300000000000096e-05 seconds process time
这是非常奇怪的我。
阅读this已经张贴问题的答案说:
[...] time.clock()测量的已使用当前进程的CPU时间。
但我无法得到它,当前进程使用的时间在做什么?当我在Unix上拨打time.clock()
时,我得到一个浮点数,这意味着在那个瞬间?从过程中消耗的时间多少?至 ??
“弃用”表示它们将在未来的版本中被删除,这与推荐不以特定方式使用时不同。 – chepner 2014-09-10 19:57:23
尝试在需要几秒钟计算的函数中放入一个'print(time.clock())',那么它会更有意义。 – 2014-09-10 20:00:20