3

在 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

4 回答 4

3

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

于 2013-10-16T12:30:34.760 回答
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()当需要更复杂的时间测量时,使用可能会产生无法预料的后果,例如多个线程或必须相互通信的不同功能 - 如果它们都相对于他们自己,很难让事情保持不变。

于 2013-10-16T12:32:38.597 回答
1

我有同样的错误。

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

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

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

于 2019-02-05T10:08:39.423 回答
0

你可以

start1 = time.clock()

Calculation

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

start2 = time.clock()

Calculation

print "Runtime: " + str(time.clock() - start2)
于 2013-10-16T12:35:35.010 回答