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

Python中time.perf_counter()方法的时间参考基准点是什么

time.perf_counter()的时间参考基准说明

time.perf_counter()没有公开、固定的绝对时间基准点,从设计上就不支持转换为现实日期对应的墙钟时间。

  • 这个函数的唯一设计用途是提供高精度的短间隔计时,用来统计代码段运行耗时。它的计数起点是系统实现时自行选定的未定义值:在macOS上通常是进程启动的时间点,部分系统上也可能是CPU上电运行的时间点,不同操作系统、不同Python版本、甚至同个系统下每次重新运行脚本,这个起点都可能发生变化,和Unix时间使用的1970年1月1日纪元点没有任何绑定关系。
  • 你测试中得到的820秒左右的返回值,只是从这个未定义起点到调用时刻的经过秒数。直接把这个值传给time.localtime()时,该函数会默认把输入参数当做「从1970年1月1日0点开始累计的Unix时间戳」解析,自然会得到1970年的错误时间,属于典型的接口误用,不是函数本身的bug。
  • 你测试脚本里用到的time.process_time()逻辑完全一致:它返回的是当前进程累计消耗的CPU运行时间,同样没有固定绝对时间基准,仅适合计算CPU占用耗时,不能用来转换为墙钟时间。

所有基准点未定义的计时类接口,包括perf_counter、process_time、monotonic,唯一合法的用法是记录调用前后的两个返回值做差,得到中间经过的时间长度,单独拿某一个时刻的返回值做时间转换没有任何实际意义。

正确用法参考

如果需要测量代码运行耗时:

import time

start = time.perf_counter()
# 填入需要统计耗时的业务逻辑
time.sleep(1)
cost = time.perf_counter() - start
print(f"代码执行耗时: {cost:.3f}秒")

如果需要获取当前的现实时间(墙钟时间),请使用基准点固定为Unix纪元的time.time()获取时间戳再做转换:

import time
# 输出当前本地时间的正确写法
print(time.asctime(time.localtime(time.time())))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:51:47