我正在运行Mac OS X 10.8并且对time.clock()有一些奇怪的行为,一些在线消息来源说我应该更喜欢time.time()来为我的代码计时.例如:
import time
t0clock = time.clock()
t0time = time.time()
time.sleep(5)
t1clock = time.clock()
t1time = time.time()
print t1clock - t0clock
print t1time - t0time
0.00330099999999 <-- from time.clock(), clearly incorrect
5.00392889977 <-- from time.time(), correct
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我应该使用time.time()进行可靠的估算吗?
来自以下文档time.clock:
在Unix上,将当前处理器时间返回为以秒为单位的浮点数.精度,实际上是"处理器时间"含义的定义,取决于同名C函数的精度,但无论如何,这是用于对Python或时序算法进行基准测试的函数.
来自以下文档time.time:
返回自纪元以来的秒数作为浮点数.请注意,即使时间总是作为浮点数返回,但并非所有系统都提供的精度高于1秒.虽然此函数通常返回非递减值,但如果在两次调用之间设置了系统时钟,则它可以返回比先前调用更低的值.
time.time()以秒为单位的time.clock()度量,测量当前进程使用的CPU时间量.但在Windows上,这是不同的,因为clock()也测量秒.
而不是使用time.time或time.clock使用timeit.default_timer.这将time.clock在所有其他平台sys.platform == "win32"和time.time所有其他平台上返回.
这样,您的代码将使用独立于平台的最佳计时器选择.
来自timeit.py:
if sys.platform == "win32":
# On Windows, the best timer is time.clock()
default_timer = time.clock
else:
# On most other platforms the best timer is time.time()
default_timer = time.time
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3138 次 |
| 最近记录: |