【问题标题】:What is the highest scale of time precision that can be reached via Python?通过 Python 可以达到的最高时间精度是多少?
【发布时间】:2012-12-07 16:12:06
【问题描述】:

考虑一个非常简单的计时器;

start = time.time()
end = time.time() - start 
while(end<5):
    end = time.time() - start
    print end

这个计时器有多精确?我的意思是,与实时时钟相比,这个时钟的同步性和实时性如何?

现在是真正的问题;

可以用 Python 精确测量的最小时间尺度是多少?

【问题讨论】:

    标签: python time precision


    【解决方案1】:

    这完全取决于平台。使用timeit.default_timer() function,它会为您的平台返回最精确的计时器

    来自文档:

    以特定于平台的方式定义默认计时器。在 Windows 上,time.clock() 的粒度为微秒,但time.time() 的粒度为 1/60 秒。在 Unix 上,time.clock() 的粒度是 1/100 秒,而time.time() 则要精确得多。

    因此,在 Windows 上,您可以获得微秒,在 Unix 上,您将获得平台可以提供的任何精度,这通常(远)优于 1/100 秒。

    【讨论】:

    • 在具有更“准确”时间保持的外部设备上 - 本身就是一篇完整的文章! +1
    • @MartijnPieters 一件事我不明白。如果在每台计算机中都有一个专用于实时时钟的电路(这里是这样说的stackoverflow.com/questions/25785243/…),那么计时器精度如何与平台(即来自 unix 或 win)不同,它应该总是相同的吗?我的意思是如果电路每 1us 刷新一次计数器,精度不应该是 1us 而不管平台如何?
    【解决方案2】:

    这完全取决于您运行它的系统 - 无法保证 Python 完全可以跟踪时间。

    也就是说,假设您将在现代系统上获得毫秒精度是非常安全的,除此之外,它确实高度依赖于系统。引用the docs:

    虽然此模块始终可用,但并非所有功能都可用 可在所有平台上使用。这个定义的大部分函数 模块调用同名的平台 C 库函数。它可能 有时查阅平台文档会有所帮助,因为 这些函数的语义因平台而异。

    还有:

    各种实时功能的精度可能低于 由表达它们的值或参数的单位建议。 例如。在大多数 Unix 系统上,时钟“滴答”一次只有 50 或 100 次。 第二个。

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 2010-09-23
      • 2022-03-02
      • 2022-03-02
      • 2022-11-30
      相关资源
      最近更新 更多