在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()
,但我可以使用什么呢?
答案 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',它与时间模块的名称相同。
因此它回答您变量时间没有属性时间,因为变量会覆盖模块时间。
检查您的变量名称或更改模块名称!