【问题标题】:time.clock() doesn't return time properlytime.clock() 不能正确返回时间
【发布时间】:2016-09-03 20:19:26
【问题描述】:

这段代码:

import time

now = time.clock()
while now + 5 > time.clock():
    print time.clock()
    time.sleep(1)
    print "Woke up"

返回:

0.015718
Woke up
0.015814
Woke up
0.015942
Woke up
0.016107
Woke up
0.01625
Woke up
0.016363

如您所见,返回的时间似乎并没有返回以整数表示的秒数的经过时间,即使这是文档所说的它应该做的事情。这里有什么问题?

编辑:我在 Mac OS X El Capitan 上

【问题讨论】:

  • 引用文档:在 Unix 上,以浮点数形式返回当前处理器时间,以秒为单位。精度,实际上是“处理器时间”含义的定义,取决于同名 C 函数的精度。
  • 你正在开发什么操作系统?
  • 查看我的编辑。关于文档,它仍然说应该以秒表示,这里不是这样。
  • 文档声明它返回一个浮点数,而不是整数:“...作为浮点数...”。它以秒表示,它是 CPU 使用时间,而不是 CPU 运行时间,sleep() 函数不使用 CPU 时间。您可能正在寻找返回经过时间的 time.time()。

标签: python time clock


【解决方案1】:

您可能应该阅读手册:

在 Unix 上,以浮点数形式返回当前处理器时间,以秒为单位。精度,实际上是“处理器时间”含义的定义,取决于同名 C 函数的精度,但无论如何,这是用于对 Python 或计时算法进行基准测试的函数。 在 Windows 上,此函数根据 Win32 函数 QueryPerformanceCounter() 返回自第一次调用此函数以来经过的挂钟秒数,作为浮点数。分辨率通常优于 1 微秒。

假设您使用的是 UNIX(fx Linux 或 iOS),则行为是正确的。 time.clock 返回进程消耗的 CPU 时间,睡眠时不会消耗任何 CPU 时间。

当然,UNIX 和 Windows 之间的差异使此功能无用,除非您检测到哪种行为有效并采取相应措施。

【讨论】:

    【解决方案2】:

    根据模式,这可能会奏效。 time.clock() 将为您提供处理时间和 time.time() - now_time() 将提供每次经过多少秒 time.sleep(1)

    import time
    now = time.clock()
    now_time = time.time()
    while now + 5 > time.clock():
        print time.time() - now_time + time.clock()
        time.sleep(1)
        print "Woke up"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2019-02-05
      • 2014-05-11
      • 2011-09-06
      相关资源
      最近更新 更多