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

Python中datetime计算时间差有时返回0?如何获取准确时长?

如何确保总能获取到函数执行的时间差

你的问题出在datetime.now()的精度限制上。这个方法依赖系统本地时钟,当函数内的操作执行速度极快(耗时小于系统时钟的最小更新间隔,通常是1毫秒左右),两次调用datetime.now()会得到完全相同的时间戳,自然计算出的时间差就是0——不管你用microseconds还是total_seconds()转换,结果都是0,因为时间差本身就是0。

要解决这个问题,应该使用专门为短时间间隔测量设计的time.perf_counter(),它提供了比datetime.now()高得多的精度(通常能到纳秒级),专门用于性能计时场景。

修改后的代码如下:

import time

def my_function():
    start_time = time.perf_counter()

    # Do something

    end_time = time.perf_counter()

    # 返回秒为单位的时间差,保留足够小数位
    return end_time - start_time

print(my_function())

关键说明:

  • time.perf_counter()返回高精度浮点数,单位为秒,即使操作耗时只有几微秒,也能准确捕捉到非零的时间差。
  • 如果需要以微秒/毫秒为单位展示,直接对结果转换即可:
    • 毫秒:(end_time - start_time) * 1000
    • 微秒:(end_time - start_time) * 1_000_000
  • 不要用time.time()替代,它的精度同样受系统时钟限制,还可能受系统时间调整(比如NTP同步)影响,而perf_counter()是单调递增的,不受系统时间变化干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:05