【问题标题】:Confused about the behavior of time.clock in Python对 Python 中 time.clock 的行为感到困惑
【发布时间】:2014-10-21 01:17:45
【问题描述】:

所以我可以使用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对应的是什么?

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

关于模块时间内置函数时钟的帮助:

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

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.

【问题讨论】:

标签: python python-2.7 time clock


【解决方案1】:

什么系统?

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

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

【讨论】:

  • 这更像是一个评论而不是一个答案。
  • 由于创作用户的声誉此时不是sufficecomment,因此发布答案似乎是唯一的选择。
【解决方案2】:

time.clock() 出现返回 Python 进程计算事物所花费的时间。至少在交互式控制台中,它等待您输入的时间不知何故不包括在该时间中。

这是一个 sn-p,您可以使用它来查看 time.clock() 的更多预期行为:

while True: print clock()

【讨论】:

    【解决方案3】:

    time.clock() docs:

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

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

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

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

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

    【讨论】:

    • 是否也可以用于网络请求(requests.get('www.google.com'))或数据库查询等计时码?
    • @usualme:是的。 timeit.default_timer() 测量挂钟时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2023-03-17
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多