Py-spy:优秀的 Python 程序性能监控、分析器

这是「进击的Coder」的第 787 篇技术分享

作者:Ckend

来源:Python 实用宝典

阅读本文大概需要 3 分钟。

5d1d6be272078ae98c95918a7ac86ea8.gif

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,你也可在公众号后台回复 pyspy 下载。
GitHub Release Page: https://github.com/benfred/py-spy/releases

2.用法


py-spy 在命令行中进行工作,获取你要从监控的程序的 PID 或你要运行的 python 程序的文件。分别有三种分析方法 recordtop 以及 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 文件,如下所示:

f6acc50ccc59910f56580ba27f89a128.png

你可以使用参数 --format 更改文件格式。请参阅参考资料:py-spy record --help 以获取有关其他选项的信息,包括更改采样率,仅包含 GIL 的线程进行过滤,对本机 C 扩展进行概要分析,显示线程 ID,概要分析子进程等。

Top


Top 显示了在 python 程序中花费最多时间的函数的实时视图,类似于 Unix top 命令。使用以下命令运行:

py-spy top --pid 12345
# OR
py-spy top -- python myprogram.py


将显示你的 python 程序的实时函数消耗:

5b833f0949ff16eef7029ecd5bad90eb.gif

Dump


py-spy 还可以使用 dump 命令显示每个 python 线程的当前调用堆栈:

py-spy dump --pid 12345

这会将每个线程的调用堆栈以及其他一些基本进程信息转发到控制台:

对于需要一个调用堆栈来确定 python 程序挂在何处的情况,这很有用。该命令还可以通过设置 --locals 标志来打印出与每个堆栈帧关联的局部变量。

d538009c3d4bfe82727400ab35630c4c.png

我们的文章到此就结束啦,我们下期再见,Respect!

4f3f846d064886ead9423c9087b7a64b.png

End

崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,‍同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!

内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍

259da5552486bb85562371f47b2d6d68.jpeg

扫码购买

395f52b81fa5ef51d7530bec6df71fd8.png

好文和朋友一起看~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值