Py-spy:基于Rust、低开销的Python性能分析器,用于实时性能分析。无需修改代码,适配生产环境调试
Py-spy 是一款功能强大的 Python 程序采样分析器,可让你直观查看 Python 程序的运行时资源消耗,且无需重启程序或修改代码。
相较于其他性能分析工具,Py-spy 的运行开销极低——它由 Rust 语言编写,执行效率极高,且不会与被分析的 Python 程序运行在同一进程中。这意味着 Py-spy 可安全用于生产环境的 Python 代码分析。
Py-spy 是一款采样分析器,其工作原理是周期性对 Python 程序进行采样,以此定位程序的耗时核心环节。
与侵入式分析器不同,Py-spy 以独立进程运行,通过系统调用读取目标 Python 进程的内存以获取调用栈信息,不会干扰目标程序的正常执行。这使其成为分析生产环境代码的理想工具。
它支持 Linux、macOS、Windows、FreeBSD 等多种操作系统,且兼容绝大多数版本的 CPython 解释器。
Py-spy 主要提供三条核心命令:record、top 和 dump,分别用于生成性能报告、实时监控程序性能、获取当前调用栈信息。

Py-spy 的安装十分简便,可通过 pip 直接安装:
pip install py-spyrecord 命令:生成性能报告record 命令用于生成程序执行的性能报告,可指定输出文件格式(如生成火焰图的 SVG 格式、speedscope 格式或原始数据)、采样率等参数。
# 通过进程ID分析正在运行的程序py-spy record -o profile.svg --pid 12345# 分析新启动的Python程序py-spy record -o profile.svg -- python myprogram.py生成的火焰图可直观展示程序的性能瓶颈。
top 命令:实时性能监控top 命令效果类同 Unix 系统的 top 命令,可实时展示程序中耗时最多的函数。
# 通过进程ID分析正在运行的程序py-spy top --pid 12345# 分析新启动的Python程序py-spy top -- python myprogram.py该命令会持续刷新展示内容,帮你快速定位性能瓶颈。
dump 命令:获取当前调用栈dump 命令用于获取程序当前的调用栈信息,适用于死锁或其他运行时问题的调试。
# 通过进程ID分析正在运行的程序py-spy dump --pid 12345Py-spy 官方文档包含诸多常见问题的解决方案,例如如何处理子进程、如何避免暂停程序、如何解决权限问题等。这些常见问题覆盖了 Py-spy 使用的各类场景,能帮助用户更好地理解与使用该工具。例如,在 Docker 或 Kubernetes 环境中使用 Py-spy,需要额外配置以获取所需权限。
Py-spy 是一款强大且易用的 Python 性能分析工具。凭借低开销、无需修改代码、跨平台支持等优势,它成为 Python 程序调试与性能优化的理想选择。
