Linux中國

使用開源可視化工具來理解你的 Python 代碼

隨著 Python 項目變得越來越大、越複雜,理解起它來就變得充滿挑戰性。即使是你自己獨自編寫了整個項目,也不可能完全知道項目是如何工作的。為了能更好的理解你的代碼,調試和分析代碼變得至關重要。

VizTracer 是一個這樣的工具,它通過跟蹤和可視化 Python 代碼的執行過程,來幫助你對代碼的理解。無需對源代碼進行任何更改,VizTracer 即可記錄函數的入口 / 出口,函數參數 / 返回值以及任意變數,然後通過 Trace-Viewer 使用直觀的谷歌前端界面來顯示數據。

下面是一個運行蒙特卡洛樹搜索的例子:

![Monte Carlo tree search visualization](/data/attachment/album/202011/13/225708ar0qp1zh6qxiyh09.png "Monte Carlo tree search visualization")

每個函數都在時間線上以堆棧的形式記錄和可視化,這樣你就可以看到在運行程序時發生了什麼。你可以放大查看任意特定點的詳細信息:

![Zooming in on VizTracer visualization](/data/attachment/album/202011/13/225755ccitzrirru8n7ect.png "Zooming in on VizTracer visualization")

VizTracer 還可以自動記錄函數參數和返回值。你可以單擊函數條目並查看詳細信息:

![Viewing VizTracer details](/data/attachment/album/202011/13/225756i4nzednx7en17117.png "Viewing VizTracer details")

或者你可以創建一個全新的信號,並用它來記錄變數。例如,這顯示了執行梯度下降時的成本值:

![VizTracer gradient descent](/data/attachment/album/202011/13/225818bmmamppcsac0piv9.png "VizTracer gradient descent")

與其他設置複雜的工具相比,VizTracer 使用起來非常簡單,並且沒有任何依賴關係。你可以從 pip 安裝它:

pip install viztracer

你也可以通過輸入來跟蹤你的程序(<your_script.py> 是你腳本的名稱):

viztracer <your_script.py>

VizTracer 將在你的工作目錄中生成一個 HTML 報告,你可以在 Chrome 瀏覽器中打開它。

VizTracer 還提供了其他高級功能,比如過濾器功能,你可以使用它過濾掉不想跟蹤的函數,獲得更清晰的報告。例如,要僅包含文件中的函數,你需要:

viztracer include_files ./ --run <your_script.py>

記錄函數參數和返回值:

viztracer --log_function_args --log_return_value <your_script.py>

記錄與某個正則表達式匹配的任意變數:

# log variables starts with a
viztracer --log_var a.* --run <your_script.py>

你可以通過對源代碼進行較小的修改來獲得其他功能,例如自定義事件來記錄數值和對象。

VizTracer 還包括一個虛擬調試器(vdb),它可以調試 VizTracer 的日誌文件。可以用 vdb 調試你運行中的代碼(與 pdb 非常相似)以便你了解代碼流。有用的是,它還支持時間回溯,因為它知道發生的一切。

與一些原型不同,VizTracer 使用純 C 語言實現其核心,這將極大地減少開銷,使其達到類似於 cProfile 的水平。

VizTracer 是開源的,在 Apache 2.0 許可下發布,支持所有常見的操作系統平台(Linux、macOS 和 Windows)。你可以在 GitHub 上了解關於它的更多特性並訪問源代碼。

via: https://opensource.com/article/20/11/python-code-viztracer

作者:Tian Gao 選題:lujun9972 譯者:xiao-song-123 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...