py-spy是用于Python程序的性能监控器。它使你可以直观地看到Python程序花费的时间,而无需重新启动程序或以任何方式修改代码。
py-spy的开销非常低:为了最大化提高速度,它是用Rust编写的,并且与配置的Python程序不在同一进程中运行。这意味着 py-spy 可以安全地用于生产环境的Python程序。
py-spy 可在 Linux,OSX,Windows 和 FreeBSD 上运行,并支持所有最新版本的CPython解释器(2.3-2.7和3.3-3.8版)进行性能分析。
1.安装
可以通过以下方式从 PyPI 安装预构建的二进制wheel文件:
pip install py-spy
你也可以从 GitHub Release Page 下载预构建的二进制文件,如果网络无法连接GitHub,你也可在 Python实用宝典 公众号后台回复 pyspy 下载。
2.用法
py-spy 在命令行中进行工作,获取你要从监控的程序的PID或你要运行的python程序的文件。分别有三种分析方法 top
以及dump
:
record
py-spy支持使用record
命令将配置文件记录到文件中。例如,您可以通过执行以下操作来生成python进程的热力图:
py-spy record -o profile.svg --pid 12345 # OR py-spy record -o profile.svg -- python myprogram.py
它将生成一个交互式SVG文件,如下所示:
你可以使用参数 –format 更改文件格式。请参阅参考资料,py-spy record --help
以获取有关其他选项的信息,包括更改采样率,仅包含GIL的线程进行过滤,对本机C扩展进行概要分析,显示线程ID,概要分析子进程等。
Top
Top
Top显示了在python程序中花费最多时间的函数的实时视图,类似于Unix top命令。使用以下命令运行:
py-spy top --pid 12345 # OR py-spy top -- python myprogram.py
将显示你的python程序的实时函数消耗:
Dump
py-spy 还可以使用 dump
命令显示每个 python 线程的当前调用堆栈:
py-spy dump --pid 12345
这会将每个线程的调用堆栈以及其他一些基本进程信息转发到控制台:
对于需要一个调用堆栈来确定python程序挂在何处的情况,这很有用。该命令还可以通过设置 --locals
标志来打印出与每个堆栈帧关联的局部变量。
我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典
评论(0)