Py-spy:Python 程序性能监控、分析器

简介:Py-Spy是Python程序的抽样分析器,支持可视化查看Python程序在哪些地方花了更多时间,能够生成程序运行火焰图,实时显示函数占用等,是分析和优化Python代码的神兵利器。

历史攻略:

Python:代码覆盖率工具coverage

Python:运行效率慢5个原因

代码质量管理平台SonarQube:002 - sonar-scanner扫描python代码

安装:

pip install py-spy

检查安装结果:py-spy -h

py-spy -h
py-spy 0.3.14
Sampling profiler for Python programs

USAGE:
    py-spy <SUBCOMMAND>

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

SUBCOMMANDS:
    record    Records stack trace information to a flamegraph,
                  speedscope or raw file
    top       Displays a top like view of functions consuming CPU
    dump      Dumps stack traces for a target program to stdout
    help      Print this message or the help of the given subcommand(s)

参数解析:

record:生成火焰图
top:实时查看每个函数运行时间并统计
dump:显示每个python线程的当前调用堆栈

被测服务源码:

# -*- coding: utf-8 -*-
# time: 2023/3/10 0:22
# file: main.py
# 公众号: 玩转测试开发

from sanic import Sanic
from sanic.response import json

app = Sanic(__name__)


@app.get("/")
async def hello(request):
    return json({"hello": "world"})


if __name__ == '__main__':
    app.run(port=7000)

运行程序:运行一个sanic服务。会展示出一个pid,在运行期间,使用py-spy分析代码。

Starting worker [23080]

python main.py

运行监控:

py-spy record -o profile.svg --pid 23080

运行效果图:

图片

火焰图效果展示:

图片

从图中可知,第18行代码最耗时(因为只运行了一个run这个方法)。

将鼠标光标挪到相应具体示例,往下剖析,我们发现:

图片

占用程序运行耗时比较高的为:_poll (asyncio\windows_events.py:783),占用接近75%

综上:安装完成后,先运行一个程序,然后使用py-spy传入相应的pid,即可一步步分析性能,分析存储的火焰图效果,解析代码耗时行为。进而最终进行性能优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值