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

Python中如何获取两次调用之间的毫秒级时间差?

如何准确获取两次连续调用之间的毫秒数?

先澄清常见误解,再给出最优方案:

梳理各时间方法的实际问题

  • time.clock():Python 3.3+已明确弃用,无需考虑
  • time.time():基于系统纪元时间,会受闰秒、手动调整系统时间等影响,计算时间间隔不可靠
  • time.process_time()/time.thread_time():仅统计CPU运行时间,会忽略休眠、IO等待等非CPU耗时,不适合需要真实时间间隔的场景
  • time.monotonic():单调递增但精度依赖系统,整体性能计数器精度不如perf_counter系列
  • time.perf_counter():返回浮点数,双精度浮点数能精确表示到2^53以内的整数,对应到毫秒级相当于约89000年的时长,日常使用中完全不存在精度损失问题
  • time.perf_counter_ns():返回整数纳秒,不存在最多追踪4秒的限制——Python的整数是任意精度类型,不会像其他语言的固定位数整数那样出现溢出,完全可以追踪极长时间的间隔

最优方案:封装自定义的perf_counter_ms()

如果你需要返回整数毫秒、同时保证高精度和长追踪时长,直接基于perf_counter_ns()封装即可:

import time

def perf_counter_ms():
    # 将纳秒转换为毫秒,取整得到整数结果
    return time.perf_counter_ns() // 1000000

这个方法具备以下优势:

  • 继承perf_counter_ns()的高精度与单调性,不受系统时钟调整影响
  • 返回整数毫秒,完全满足精度需求
  • Python的任意精度整数支持,追踪时长没有上限(远超你提到的400万秒)

如果只是需要毫秒级精度,直接使用time.perf_counter()也完全足够——它的浮点数精度在日常场景下不会带来任何问题,计算间隔时只需用后一次调用值减去前一次,再乘以1000即可得到毫秒数:

start = time.perf_counter()
# 执行需要计时的代码
end = time.perf_counter()
elapsed_ms = (end - start) * 1000

内容的提问来源于stack exchange,提问作者Mike 'Pomax' Kamermans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:25:11