py-spy Python 性能剖析
py-spy 是采样式 Python profiler,可以在不修改代码、不重启进程的情况下查看 Python 调用栈和热点函数。适合排查线上 CPU 高、卡死和线程阻塞。
支持 top、record、dump、flamegraph 和 speedscope 输出。它通过读取进程内存工作,需要 ptrace 权限。
实时查看:
py-spy top --pid 12345
采样并生成火焰图:
py-spy record -o profile.svg --pid 12345 --duration 30
导出 speedscope:
py-spy record -f speedscope -o profile.json --pid 12345
抓取当前调用栈:
py-spy dump --pid 12345
分析子进程:
py-spy record --subprocesses -o profile.svg -- python app.py
容器内使用:
docker exec -it --cap-add SYS_PTRACE app py-spy top --pid 1
Permission denied;容器要加 SYS_PTRACE。yama/ptrace_scope 限制,非 root 无法 attach。top 只显示 Python 栈,C 扩展热点需要 perf/eBPF。