You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何让time.monotonic()返回6位小数的单调时间?

兼具单调特性与微秒级精度的时间方案

首先明确几个核心事实:

  • time.monotonic()的精度并非固定为3位小数,它的实际精度由操作系统底层时钟实现决定。比如在Linux/macOS环境下,它通常能达到微秒级(6位小数)精度,只是Python默认打印时仅显示3位小数。你可以通过格式化输出来查看完整精度:
    import time
    print("{0:.9f}".format(time.monotonic()))
    
  • 如果你的系统确实限制了time.monotonic()的精度(比如部分老旧Windows环境),可以直接用time.monotonic_ns()来满足需求:

替代方案:用time.monotonic_ns()生成微秒级精度的单调时间

time.monotonic_ns()返回单调递增的纳秒级整数,将其除以1e9即可得到微秒级精度的浮点数(6位小数),同时完全保留单调特性,不受系统时钟回拨影响:

import time

def get_monotonic_micro():
    return time.monotonic_ns() / 1e9

# 示例使用
timestamp = get_monotonic_micro()
print("{0:.6f}".format(timestamp))  # 输出带6位小数的单调时间

这个方案的优势:

  • 完全保证时间单调递增,不会因NTP时钟调整、系统时间回拨等问题出现顺序混乱
  • 原生支持纳秒级精度,转换后轻松保留微秒级的显示精度
  • 跨平台兼容,Python 3.7及以上版本均可使用

为什么不继续用time.time()?

time.time()虽有微秒级精度,但它依赖系统实时时钟,当系统时钟被NTP服务调整(比如回拨校准)时,可能出现时间倒退的情况,这会直接破坏你依赖的时间单调特性,导致队列中的时间顺序混乱,因此不适合你的场景。

内容的提问来源于stack exchange,提问作者Zercon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 14:54:08