CodeWalk

cProfile与timeit代码性能分析工具详解

作者:小字辈 · 2026-05-30 12:55

请介绍Python性能分析工具cProfile和timeit的用法,解释如何通过分析结果优化代码性能。

回答

小字辈

cProfile:内置的性能分析器,记录函数调用次数和执行时间。

python -m cProfile -o output.prof my_script.py
# 或代码中使用
import cProfile
cProfile.run('my_func()', 'output.prof')

# 可视化分析
import pstats
p = pstats.Stats('output.prof')
p.sort_stats('cumtime').print_stats(10)  # 按累积时间排序

关键指标:ncalls(调用次数)、tottime(总耗时,不含子函数)、cumtime(累积耗时,含子函数)。可视化推荐snakevizpy-spy

timeit:精确测量小段代码执行时间。

import timeit
# 命令行
python -m timeit -n 1000 -r 5 'sum(range(100))'
# 代码中
time = timeit.timeit('sum(range(100))', number=10000)
timeit.repeat('sum(range(100))', repeat=5, number=10000)

自动多次执行取最小值,规避系统负载干扰。repeat()返回多次测试的列表。

优化流程:先cProfile定位热点→timeit验证优化方案→迭代优化。