python 性能瓶颈统计

cProfile: 统计CPU、运行时间

Python中的性能分析工具cProfile

在Python中,cProfile是一个强大的性能分析工具,它可以帮助开发者了解程序的运行时间和调用次数等信息。cProfile是基于lsprof的C语言扩展,它提供了合理的运行开销,适合分析长时间运行的程序。cProfile可以通过命令行或在Python脚本中直接使用。

在Python脚本中使用cProfile

要在Python脚本中使用cProfile,你可以直接导入cProfile模块,并使用cProfile.run()函数。这个函数接受一个字符串形式的函数名,并执行该函数,同时收集性能分析数据。例如:

import cProfile

def your_func():
# 你的代码
pass

if __name__ == "__main__":
# 直接把分析结果打印到控制台
cProfile.run('your_func()')
# 把分析结果保存到文件中
cProfile.run("your_func()", filename="result.out")
# 增加排序方式
cProfile.run("your_func()", filename="result.out", sort="cumulative")

在终端中使用cProfile

你也可以在终端中使用cProfile对Python脚本进行性能分析。这种方法不需要修改原有的Python代码,只需要在终端中运行以下命令:

# 直接把分析结果打印到控制台
python -m cProfile test.py
# 把分析结果保存到文件中
python -m cProfile -o result.out test.py
# 增加排序方式
python -m cProfile -o result.out -s cumulative test.py

分析结果的解释

cProfile的分析结果包括函数的调用次数、总运行时间、每次调用的平均运行时间等信息。这些数据可以帮助开发者识别代码中的性能瓶颈,优化程序的运行效率。

可视化工具 - snakeviz

为了更直观地理解cProfile的分析结果,你可以使用snakeviz这个可视化工具。安装snakeviz后,你可以通过以下命令来查看性能分析结果:

安装snakeviz

pip install snakeviz
# 使用snakeviz查看分析结果
snakeviz result.out

打开浏览器后,你可以看到一个交互式的图表,展示了不同函数的运行时间和调用关系。

远程查看 记录

 ssh -L 8082:localhost:8082 {
   
   name}@{
   
   IP}
 snakeviz  cpu.prof

注意事项

cProfile默认情况下只统计主线程的运行时间。如果你的程序使用了多线程或多进程,你需要为每个线程或进程分别执行cProfile的API来收集性能数据。

通过使用cProfile,开发者可以有效地识别和解决Python程序中的性能问题,提高代码的运行效率。

CPU瓶颈分析(快速定位热点函数)

python3.9 -m cProfile -s cumulative -o cpu.prof your_script.py
python3.9 -m pstats cpu.prof  # 查看报告

https://www.cnblogs.com/zengzuo613/p/18603779

memory_profiler: 统计内存使用

安装方法

使用以下命令安装 memory_profiler:

pip install memory_profiler

如果需要生成内存使用曲线图,还需安装 matplotlib:

pip install matplotlib

基本用法

通过在函数前添加 @profile 装饰器,可以监控该函数的内存使用情况。以下是一个示例:

from memory_profiler import profile
import time

@profile
def slow_function():
time.sleep(1)
a = [i for i in range(10000)]
time.sleep(1)
b = [</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值