py-spy 是 Rust 编写的 Python 采样式性能分析器,无需重启或修改代码即可分析运行中的 Python 进程,可安全用于生产环境。
- v0.4.2
- 发布于
- 2026年4月25日
- 15,588
- 星标
- 97,799
- 下载
- 同步于
- 8 天前
作者已不再通过 GitHub Release 发版,但仓库仍在更新(最近提交 13 天前)。最新版本请到官网获取:
最新版本
v0.4.22026年4月25日 06:08下载慢?可在上方随时切换镜像源
项目说明
项目概述
py-spy 是一个针对 Python 程序的采样式性能分析器,用 Rust 编写,无需重启进程或修改任何代码即可查看程序时间花费在哪。它以极低开销运行在与目标进程分离的进程里,因此可以安全地分析生产环境的 Python 服务。支持生成火焰图、实时 top 视图与线程调用栈转储,覆盖 Linux、macOS、Windows 与 FreeBSD。
| 项目 | 内容 |
|---|---|
| 语言 | Rust |
| 类型 | 采样式 profiler |
| 支持 | CPython 2.3-2.7、3.3-3.15 |
| 许可 | MIT |
不重启、不改码,直接看清线上 Python 进程在忙什么。
主要功能
- 火焰图录制:record 命令生成可交互的 SVG 火焰图
- 实时 top:top 命令实时展示最耗时的函数
- 栈转储:dump 命令输出各线程当前调用栈,排查卡死
- 附加式分析:通过 PID 直接分析运行中的进程
- 原生扩展分析:--native 支持 C/C++、Cython 扩展(部分平台)
- 子进程分析:--subprocesses 一并分析子进程
- GIL 过滤:可只采样持有 GIL 的线程
- 多格式导出:支持 speedscope 与原始数据格式
适用人群
- 后端开发者
- SRE 与运维工程师
- 排查线上性能问题的团队
- 数据管道开发者
- Python 服务负责人
快速上手
- 安装 py-spy
pip install py-spy- 录制火焰图
py-spy record -o profile.svg --pid 12345- 实时查看热点函数
py-spy top --pid 12345- 程序卡死时转储调用栈
py-spy dump --pid 12345核心优势
- 生产安全:进程外采样、开销极低,不影响线上服务
- 零侵入:不需要重启或修改被分析程序
- 即装即用:pip、brew 等渠道都有预编译包
系统要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Linux、macOS、Windows、FreeBSD |
| 支持解释器 | CPython 2.3-2.7、3.3-3.15 |
| 权限 | 附加进程可能需要 root 或调试权限 |
注意事项
- 平台差异:--native 原生扩展分析仅在部分平台可用
- 符号建议:分析原生扩展时建议带符号编译以获得更好结果
- 权限要求:附加生产进程通常需要相应系统权限
历史版本
排序