Py-spy:優秀的 Python 程序性能監控、分析器
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 **下載。
GitHub Release Page: https://github.com/benfred/py-spy/releases
2. 用法
py-spy 在命令行中進行工作,獲取你要從監控的程序的 PID 或你要運行的 python 程序的文件。分別有三種分析方法 reco****rd,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 顯示了在 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 實用寶典。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/rGVHDp_g51ni_gJm_8rNrw