什么是 timeit?
timeit 是 Python 标准库中的一个模块,专门用于测量小段代码的执行时间。
它通过多次运行代码并取平均值,以减少系统波动对结果的影响,从而提供更准确的性能数据。
提示:timeit 默认会禁用垃圾回收(garbage collection),以避免其对计时造成干扰。
基本用法
你可以通过命令行或在 Python 脚本中使用 timeit。
1. 命令行使用
python -m timeit "'-'.join(str(n) for n in range(100))"
2. 在 Python 脚本中使用
import timeit
# 测量一段表达式的执行时间
time_taken = timeit.timeit(
stmt="'-'.join(str(n) for n in range(100))",
number=10000
)
print(f"耗时: {time_taken:.6f} 秒")
高级用法:setup 与函数
当需要导入模块或定义函数时,可使用 setup 参数:
import timeit
def test_function():
return '-'.join(map(str, range(100)))
# 使用 setup 导入函数
time_taken = timeit.timeit(
stmt='test_function()',
setup='from __main__ import test_function',
number=10000
)
print(f"函数执行耗时: {time_taken:.6f} 秒")
使用 Timer 类
对于更复杂的场景,可以使用 timeit.Timer 类:
import timeit
timer = timeit.Timer(
stmt="[x**2 for x in range(100)]",
setup=""
)
print(timer.timeit(number=10000)) # 执行 10000 次并返回总时间
常见用途
- 比较不同算法或实现方式的性能
- 优化关键代码路径
- 验证性能改进是否有效
注意事项
- 仅适用于测量“小段”代码;长时间运行的任务建议使用
time模块。 - 避免在
stmt中包含 I/O 操作(如 print、文件读写),因其时间不稳定。 - 多次运行(默认 100 万次)可能耗时较长,可通过
number参数调整。