【问题标题】:time.clock() several times in Python?time.clock() 在Python中多次?
【发布时间】:2013-10-24 13:36:29
【问题描述】:

在 Windows 7 上使用 Python 2.7.5,我遇到了问题。

我正在编写一个程序,该程序应该计算计算一些数学算法所需的时间。 我使用start=time.clock()elapsed=time.clock()-start。那行得通,但是当我第二次尝试执行start=time.clock() 时,它不起作用。我收到这条消息:

start=time.time()
AttributeError: 'float' object has no attribute 'time'

我显然不能多次使用time.clock(),但是我可以用什么代替呢?

【问题讨论】:

    标签: python time clock


    【解决方案1】:

    您的代码似乎在某处有 time = <some calculated value> 将名称“时间”从指向正确的模块替换为浮点对象。

    【讨论】:

    • 不,那不是问题。该代码看起来与有效的代码完全相同。我“复制粘贴”了它。
    • 这没有意义,我可以调用 time.clock() 任意次数,你得到的错误是告诉你你的“时间”对象是一个浮点数
    • 我把所有的东西都删了,又写了一遍程序,这么短又简单。现在它起作用了。我仍然不知道出了什么问题,因为我什至对变量使用了相同的名称。无论如何,谢谢!
    【解决方案2】:

    你不应该使用time.clock():

    在 Unix 上,以浮点数形式返回当前处理器时间 以秒表示。精度,实际上就是定义 “处理器时间”的含义,取决于 C 函数的含义 同名,但无论如何,这是用于 对 Python 或计时算法进行基准测试。

    在 Windows 上,此函数返回自挂钟以来经过的秒数 首先调用这个函数,作为一个浮点数,基于 Win32 函数 QueryPerformanceCounter()。分辨率通常为 优于一微秒。

    改为使用time.time():

    以浮点数的形式返回自纪元以来的时间(以秒为单位)。 请注意,即使时间总是作为浮点数返回 数字,并非所有系统都提供比 1 更精确的时间 第二。虽然此函数通常返回非递减值,但它 如果系统时钟有 在两次通话之间被推迟。

    为了更简单地说:第一次调用time.clock() 时,它将启动一个计时器,随后每次调用time.clock() 都会产生自第一次调用以来的时间。而使用time.time() 将始终为您提供自纪元以来的时间。

    澄清一下,time.clock() 是一种相对时间测量方法,相对于您第一次使用time.clock() 方法开始计时的时间,而使用time.time() 时,您每次都会获得自纪元以来的秒数。

    在这两种方法中,您都可以很容易地推断出它们之间的差异,但是当需要更复杂的时间测量时使用time.clock() 可能会产生无法预料的后果,例如多个线程或必须相互通信的不同函数 - 如果它们都是相对于自己计时的,很难让事情保持不变。

    【讨论】:

    • time.time() 不能替代 time.clock。 time.time() 提供系统时间,因此如果例如 NTP 服务器更改了开始和结束之间的时间,您可能会得到错误的结果(包括负面结果)
    【解决方案3】:

    我有同样的错误。

    我发现我将一个变量命名为“时间”,它与时间模块同名

    所以它回答你,你的变量时间没有属性时间,因为你的变量覆盖了你的模块时间。

    检查您的变量名称或更改模块名称!

    【讨论】:

    • 谢谢!这种错误已经多次发生在我身上(尽管涉及另一个运算符或方法或其他任何东西)..真是令人沮丧..:D
    【解决方案4】:

    你可以

    start1 = time.clock()
    
    Calculation
    
    print "Runtime: " + str(time.clock() - start1)
    
    start2 = time.clock()
    
    Calculation
    
    print "Runtime: " + str(time.clock() - start2)
    

    【讨论】:

      猜你喜欢
      • 2015-04-07
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 2010-09-10
      • 1970-01-01
      相关资源
      最近更新 更多