对Python中time.clock的行为感到困惑

时间:2014-08-27 12:37:30

标签: python python-2.7 time clock

所以我可以使用time.clock()来衡量函数调用的运行时间:

>>> def f() :
  a = time.clock()
  range(pow(10,8))
  b = time.clock()
  print a,b

>>> f()
0.143698 8.345905

但现在如果只是从交互式shell反复调用time.clock()

>>> time.clock()
0.075492
>>> time.clock()
0.075931
>>> time.clock()
0.076354
>>> time.clock()
0.076754
>>> time.clock()
0.077132
...

这些数字是什么意思?

现在,如果我这样做:

>>> def g() :
      a = time.clock()
      time.sleep(10)
      b = time.clock()
      print a,b

>>> g() 
8.361528 8.361625

好的,我想sleep不计入处理时间,所以这两个数字非常接近。但8.361528对应的是什么?

我确实阅读了文档,但我仍然不明白:

  

模块时间内置功能时钟的帮助:

     

时钟(...)       clock() - >浮点数

Return the CPU time or real time since the start of the process or since
the first call to clock().  This has as much precision as the system
records.

3 个答案:

答案 0 :(得分:1)

什么系统?

“此方法将当前处理器时间作为以秒表示的浮点数返回,在Unix上,在Windows中,它返回自第一次调用此函数以来经过的挂钟秒,作为浮点数。”

http://www.tutorialspoint.com/python/time_clock.htm

答案 1 :(得分:1)

time.clock()似乎返回Python进程花费计算时间的时间。至少在交互式控制台中,等待输入的时间在某种程度上不包括在那个时间内。

您可以使用以下代码片段来查看time.clock()的更多预期行为:

while True: print clock()

答案 2 :(得分:0)

time.clock() docs

  

在Unix上,将当前处理器时间返回为以秒为单位的浮点数...
  在Windows上,此函数返回自第一次调用此函数以来经过的挂钟时间......

即,行为(例如,“处理器时间”的含义,是否包含sleep时间,精度是多少)取决于平台,但所有平台上的单位都是

  

所以我可以使用time.clock()来测量函数调用的运行时间:

请改用timeit.default_timer()。它根据操作系统分配给time.time()time.clock()。在Python 3.3+上default_timer在所有平台上都是time.perf_counter()

以秒为单位返回值(只有相对值有意义)。它包括“睡眠”时间。它提供了最高的可用分辨率来测量短持续时间。这种行为在各个平台上都是一致的。