用于可视化和分析 profile.proto 格式性能剖析数据的命令行与 Web 工具。
benfred/py-spy
一款 Python 程序采样性能分析器,无需修改代码或重启程序即可附加到运行中的进程。
- Star
- 15,628
- Fork
- 560
- 未关闭 Issue
- 236
- 最近提交
- 18小时前
这是什么?
py-spy 用于查看正在运行的 Python 程序把时间花在了哪里。它从外部对目标进程进行采样,不需要修改代码、添加导入或重启程序。工具使用 Rust 编写,与被分析的程序运行在不同进程中,开销很低,可以用于生产环境的服务。
工具提供三个子命令:`record` 可将分析结果输出为火焰图 SVG、speedscope 格式或原始数据;`top` 以类似 top 命令的方式实时显示耗时最多的函数;`dump` 打印每个线程当前的调用栈,并可选择显示局部变量。此外还支持调整采样频率、仅采样持有 GIL 的线程、分析 C/C++ 或 Cython 原生扩展,以及追踪 multiprocessing、gunicorn 等子进程。
py-spy 支持 Linux、macOS、Windows 和 FreeBSD,覆盖多个 CPython 版本。在 Linux 上附加到已有 PID 通常需要 root 权限或放宽 ptrace 限制;在 Docker 或 Kubernetes 中,容器需要添加 SYS_PTRACE 能力。
核心功能
- 01通过 PID 附加到正在运行的 Python 进程,无需修改代码或重启。
- 02可将分析结果输出为 SVG 火焰图、speedscope 格式或原始数据。
- 03提供类似 top 的实时视图,展示耗时最多的函数。
- 04打印每个线程的调用栈,可选显示局部变量。
- 05支持只采样持有 GIL 的线程,并可分析原生扩展。
- 06可追踪 multiprocessing、gunicorn 等子进程。
适用场景
- 在不重新部署的情况下,定位生产环境 Python 服务中的慢函数。
- 通过导出线程调用栈,排查卡死的进程。
- 使用 py-spy record 启动脚本并生成性能分析报告。
- 结合 Python 帧分析 Cython 或 C 扩展中的 CPU 热点。
快速上手
- 1
从 PyPI 安装预编译二进制文件
pip install py-spy - 2
分析正在运行的进程并生成火焰图
py-spy record -o profile.svg --pid 12345 - 3
实时查看正在运行进程的热点函数摘要
py-spy top --pid 12345
使用前须知
- 在 Linux 上附加到其他进程通常需要 root 权限。
- macOS 始终需要 root 权限,且系统完整性保护会阻止分析自带的 /usr/bin/python。
- --native 原生扩展分析仅在部分平台和架构组合上可用。
标签
常见问题
- py-spy 是什么?
- 一款 Python 程序采样性能分析器,无需修改代码或重启程序即可附加到运行中的进程。 py-spy 用于查看正在运行的 Python 程序把时间花在了哪里。它从外部对目标进程进行采样,不需要修改代码、添加导入或重启程序。工具使用 Rust 编写,与被分析的程序运行在不同进程中,开销很低,可以用于生产环境的服务。
- py-spy 可以免费使用吗?用的什么许可证?
- py-spy 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- py-spy 还在维护吗?
- 活跃维护中。py-spy 最近一次提交是在 2026年11月6日。
- py-spy 适合用来做什么?
- 在不重新部署的情况下,定位生产环境 Python 服务中的慢函数。 通过导出线程调用栈,排查卡死的进程。 使用 py-spy record 启动脚本并生成性能分析报告。 结合 Python 帧分析 Cython 或 C 扩展中的 CPU 热点。
- py-spy 怎么安装和运行?
- 从 PyPI 安装预编译二进制文件: pip install py-spy 分析正在运行的进程并生成火焰图: py-spy record -o profile.svg --pid 12345 实时查看正在运行进程的热点函数摘要: py-spy top --pid 12345
- 在哪里获取 py-spy?
- 源代码和安装说明在 GitHub 上:https://github.com/benfred/py-spy
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向游戏和其他应用的实时纳秒级帧与采样性能分析器,支持远程遥测。
一款 Python 性能分析器,可逐行统计 CPU、GPU 和内存消耗,并可选生成 AI 优化建议。
低开销的 Java 采样性能分析器,可采集 CPU、内存分配、锁竞争和本地内存等剖析数据。
免费的 Windows 性能分析工具,用于定位 CPU 和内存相关的性能问题,并对 .NET 运行时代码提供专门支持。
Python 调用栈性能分析器,帮你找出代码慢在哪里,支持控制台与 HTML 等多种输出。