本文目录导读:

是的,cProfile 是 Python 标准库中推荐的性能分析工具,适用于绝大多数场景。
为什么推荐 cProfile
- 内置模块:无需额外安装
- 开销较小:相比
profile(纯 Python 实现),cProfile是 C 扩展实现,对程序性能影响更小 - 功能完整:能统计函数调用次数、总耗时、累积耗时等
基本用法
命令行直接运行
python -m cProfile my_script.py
在代码中启用
import cProfile
def main():
# 你的代码
pass
if __name__ == '__main__':
cProfile.run('main()', sort='cumtime') # 按累积时间排序
保存结果到文件(最常用)
import cProfile
import pstats
# 运行分析并保存
cProfile.run('main()', 'output.prof')
# 读取并分析结果
p = pstats.Stats('output.prof')
p.sort_stats('cumtime').print_stats(20) # 显示前20行
常用排序方式
p.sort_stats('time') # 按内部耗时排序
p.sort_stats('cumtime') # 按累积耗时排序(推荐)
p.sort_stats('calls') # 按调用次数排序
p.sort_stats('ncalls') # 同上
可视化分析(进阶)
配合 snakeviz 生成火焰图:
# 安装 pip install snakeviz # 生成 .prof 文件后再执行 snakeviz output.prof
这样会在浏览器中打开交互式图表,更容易定位性能瓶颈。
什么时候不用 cProfile
- 极短时间的代码(<0.1秒):
cProfile本身的开销可能影响结果 - 需要行级精度:改用
line_profiler - 内存分析:改用
memory_profiler
简单示例
import cProfile
def slow_function():
total = 0
for i in range(10**6):
total += i
return total
def fast_function():
return sum(range(10**6))
if __name__ == '__main__':
cProfile.run('slow_function()')
cProfile.run('fast_function()')
对于大多数 Python 性能分析需求,cProfile + pstats + snakeviz 是标准且高效的方案。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播