在Python中计算代码执行时间,核心方法是利用内置模块(如time
、timeit
)或第三方工具(如cProfile
)记录时间差。 关键方法包括:简单计时(time.time()
)、高精度测量(timeit.timeit()
)、性能分析(cProfile
)以及装饰器封装计时逻辑,适用于不同场景的优化需求。
-
基础计时:
time
模块
使用time.time()
在代码块前后记录时间戳,差值即为执行时间。例如:python复制
import time start = time.time() # 待测代码 end = time.time() print(f"耗时:{end - start}秒")
适用于快速测试,但精度受系统时钟限制。
-
高精度重复测量:
timeit
模块
timeit.timeit()
通过多次执行取平均值,减少误差。例如测试列表生成耗时:python复制
import timeit time = timeit.timeit('[x**2 for x in range(1000)]', number=1000) print(f"平均耗时:{time/1000}秒")
适合微优化场景,结果更稳定。
-
性能分析:
cProfile
模块
生成详细报告,定位函数级耗时瓶颈:python复制
import cProfile cProfile.run('my_function()')
输出包含调用次数、单次耗时等,适用于复杂程序优化。
-
装饰器封装计时逻辑
用装饰器自动测量函数执行时间,避免重复代码:python复制
def timer(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) print(f"{func.__name__}耗时:{time.time() - start}秒") return result return wrapper @timer def slow_function(): time.sleep(2)
-
进阶工具:
perf_counter
与process_time
time.perf_counter()
提供更高精度(纳秒级),process_time()
仅统计CPU时间,忽略I/O等待。例如:python复制
start = time.perf_counter() # 计算密集型代码 print(f"CPU时间:{time.process_time()}")
根据需求选择工具:快速验证用time
,精确测试用timeit
,深度优化用cProfile
。注意避免在计时中包含无关操作(如打印语句),确保结果准确性。