某些 Python 程序执行时间很长,我们想对其中某些热点代码进行分析,可以使用一些工具记录执行过程中的热点函数和行。
使用 cProfile (内置标准库)
cProfile 是 Python 最常用的性能分析工具,可以统计每个函数的调用次数和耗时。
命令行直接运行:python -m cProfile -s cumulative your_script.py
-s cumulative 表示按累计耗时排序,这能帮你迅速定位哪个函数最“吃”性能。
生成热力图 (SnakeViz)
单纯看命令行输出可能比较枯燥,SnakeViz 可以将 cProfile 的结果转化成交互式的网页热力图(矩形树图或冰柱图)。
使用步骤:
- 安装:
pip install snakeviz - 生成性能数据文件:
python -m cProfile -o program.prof your_script.py - 启动可视化:
snakeviz program.prof
PySpy (采样分析器)
如果你想在不停止程序的情况下(比如你的搜索算法正在后台运行),实时观察它的运行状态,py-spy 是最佳选择。基于采样(Sampling),对程序性能几乎没有影响。
- 安装:
pip install --upgrade py-spy - 生成火焰图 (Flame Graph):
py-spy record -o profile.svg -- python your_script.py - 生成的 SVG 文件可以用浏览器打开,越宽的方块代表耗时越长。

综合来看,PySpy 的效果最好,不影响程序的性能,而且热点追踪精确到行。