使用 time.process_time()

Bri*_*f R 4 python attributeerror python-3.x

我正在尝试计算排序函数需要多长时间,但我正在努力time.process_time()工作。

我目前的设置是:

start = time.process_time()
insertionsort(n)
end = time.process_time()

time = start-end
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到此错误:

'float' 对象没有属性 'process_time'

我该如何解决这个问题?我想用time.process_time().

MSe*_*ert 9

问题出在您未显示的部分代码中。我假设您time在开始时导入了模块:

import time
Run Code Online (Sandbox Code Playgroud)

这将创建一个time引用time模块的名称。

但稍后您创建了一个名为time存储时差的变量。在这一点上,名称time引用了差异而不是模块。因此,当您time.process_time()之后尝试使用时,您会收到错误消息。

这个简单的片段说明了这个问题:

>>> import time
>>> time = -(time.process_time() - time.process_time())
>>> time.process_time()
AttributeError: 'float' object has no attribute 'process_time'
Run Code Online (Sandbox Code Playgroud)

如果您坚持使用time.process_time()最好的方法是重命名存储时差的变量:

measured_execution_time_insertionsort = end - start
Run Code Online (Sandbox Code Playgroud)

但是你也可以直接process_timetime模块中导入函数:

from time import process_time

start = process_time()
insertionsort(n)
end = process_time()

time = end - start
Run Code Online (Sandbox Code Playgroud)

这两种方法都避免了名称冲突。但是,timeit如果您想测量执行时间,我建议您使用该模块,它比该time模块更适合此类任务。