【发布时间】:2012-12-07 16:12:06
【问题描述】:
考虑一个非常简单的计时器;
start = time.time()
end = time.time() - start
while(end<5):
end = time.time() - start
print end
这个计时器有多精确?我的意思是,与实时时钟相比,这个时钟的同步性和实时性如何?
现在是真正的问题;
可以用 Python 精确测量的最小时间尺度是多少?
【问题讨论】:
考虑一个非常简单的计时器;
start = time.time()
end = time.time() - start
while(end<5):
end = time.time() - start
print end
这个计时器有多精确?我的意思是,与实时时钟相比,这个时钟的同步性和实时性如何?
现在是真正的问题;
可以用 Python 精确测量的最小时间尺度是多少?
【问题讨论】:
这完全取决于平台。使用timeit.default_timer() function,它会为您的平台返回最精确的计时器。
来自文档:
以特定于平台的方式定义默认计时器。在 Windows 上,
time.clock()的粒度为微秒,但time.time()的粒度为 1/60 秒。在 Unix 上,time.clock()的粒度是 1/100 秒,而time.time()则要精确得多。
因此,在 Windows 上,您可以获得微秒,在 Unix 上,您将获得平台可以提供的任何精度,这通常(远)优于 1/100 秒。
【讨论】:
这完全取决于您运行它的系统 - 无法保证 Python 完全可以跟踪时间。
也就是说,假设您将在现代系统上获得毫秒精度是非常安全的,除此之外,它确实高度依赖于系统。引用the docs:
虽然此模块始终可用,但并非所有功能都可用 可在所有平台上使用。这个定义的大部分函数 模块调用同名的平台 C 库函数。它可能 有时查阅平台文档会有所帮助,因为 这些函数的语义因平台而异。
还有:
各种实时功能的精度可能低于 由表达它们的值或参数的单位建议。 例如。在大多数 Unix 系统上,时钟“滴答”一次只有 50 或 100 次。 第二个。
【讨论】: