time.clock()在Python中多次?

时间:2013-10-16 12:27:14

标签: python time clock

在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(),但我可以使用什么呢?

4 个答案:

答案 0 :(得分:3)

似乎你的代码在某个地方time = <some calculated value>将名称“time”替换为指向正确的模块到float对象。

答案 1 :(得分: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()可能会产生无法预料的后果,例如多线程或不同的功能,这些功能必须相互通信 - 如果他们都与自己相关,那就很难保持不变。

答案 2 :(得分:0)

你可以

start1 = time.clock()

Calculation

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

start2 = time.clock()

Calculation

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

答案 3 :(得分:0)

我有同样的错误。

我发现我命名了一个变量'time',它与时间模块的名称相同

因此它回答您变量时间没有属性时间,因为变量会覆盖模块时间。

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