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

Python导入time库调用clock()方法报无属性错误如何解决?

报错原因
  • time.clock() 从Python 3.8版本开始被正式从标准库time模块中移除,在3.8及更高版本的Python环境中调用该方法,就会抛出AttributeError: module 'time' has no attribute 'clock'的错误。
  • 该方法被移除的核心原因是跨平台行为不一致:在Unix/Linux系统下它返回进程CPU时间,统计值不包含程序休眠、IO等待的耗时;在Windows系统下它返回的是第一次调用该方法到当前调用点的真实流逝时间(即墙上时钟时间),行为差异很容易引发跨平台运行bug。官方早在Python 3.3版本就将该方法标记为废弃,最终在3.8版本完成移除。
对应功能的正确实现方式

根据实际计时场景,选择官方推荐的替代方法即可,所有替代方法都保证跨平台行为一致:

1. 统计进程/线程CPU实际执行时间

如果需求和原Unix平台下time.clock()的核心能力一致,想要获取程序实际占用CPU计算的时长(排除sleep、IO等待等非CPU运行阶段的耗时),使用以下两个接口:

  • time.process_time():返回当前进程的用户态+内核态CPU总耗时,单位为秒,统计值不受系统时间手动调整的影响
  • time.thread_time():返回当前线程的CPU总耗时,适合多线程场景下的单线程耗时统计

你的代码修改后可直接运行:

import time

print(chr(27) + "[2J]") # ANSI转义码清屏,在支持ANSI转义序列的终端(类Unix终端、Windows Terminal等)下可生效
print("*************************") 
# 获取当前进程CPU时间,单位为秒
program_time = time.process_time()
  
print("Current processor time (in seconds):", program_time)

2. 高精度流逝时间计时

如果原来使用time.clock()是为了做高精度的耗时计算(比如统计某段代码从启动到结束的总耗时,包含sleep、IO等待的时间,对应原Windows平台下time.clock()的最常用场景),使用time.perf_counter()即可。这是Python提供的精度最高的计时接口,是代码性能测试、运行耗时统计的首选。
计时使用示例:

import time

start = time.perf_counter()
# 此处放置需要统计耗时的代码逻辑
time.sleep(1)
end = time.perf_counter()
print(f"代码总运行时长:{end - start} 秒")

旧代码兼容方案

如果在维护存量老代码,不想逐个替换所有time.clock()的调用点,可以在导入time模块后补充兼容逻辑:

import time
# 高版本Python兼容time.clock调用
if not hasattr(time, 'clock'):
    # 可根据自身业务需求选择对齐process_time或者perf_counter的行为
    time.clock = time.process_time

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:48:20