當前位置:
首頁 > 知識 > Heartrate:如追綜心跳般實時動態可視化監測Python程序運行

Heartrate:如追綜心跳般實時動態可視化監測Python程序運行

機器之心報道

參與:一鳴、杜偉

Python 是一門非常受歡迎的編程語言,其靈活易用的特性使其在 web 應用、數據分析等方面有廣泛的應用。但是 Python 有一個受到詬病的特點——運行速度低下。因此,Python 開發者需要經常對程序進行監控和調試,使代碼運行變得高效。近日,一位開發者開源了一個 Python 工具,用戶可以實時動態地監控 Python 程序的運行情況,逐行追蹤代碼的運行時間,而且整個過程是可視化的。

項目地址:https://github.com/alexmojaki/heartrate

Heartate——如監測心率般追蹤程序運行

Heartrate 是一個 Python 的工具庫,可以實時可視化 Python 程序的執行過程。監控運行中的 Python 程序如圖:

如圖所示,左側數字表示每行代碼被觸發的次數。長方框表示最近被觸發的代碼行——方框越長表示觸發次數越多,顏色越淺表示最近被觸發次數越多。

雖然追蹤每行代碼的觸發次數是一個方法,但是要是能計算每次觸發代碼的執行時間就好了。這樣能夠更好地說明哪行代碼是效率瓶頸。by 思

得益於 executing (https://github.com/alexmojaki/executing) 庫,當前被執行的調用以高亮顯示。

實時堆棧追蹤(stacktrace)如下所示:

功能

該工具可以:

啟動程序追蹤

在線程中啟動伺服器

打開顯示 trace() 被調用的文件可視化圖的瀏覽器窗口

在文件視圖中,堆棧追蹤位於底部。而在堆棧追蹤中,用戶可以點擊正在追蹤文件的堆棧條目,從而在該代碼行打開文件的可視化圖。

trace 只追蹤調用它的線程。若要追蹤多線程,用戶必須在每個線程都予以調用,並且每次的埠也不同。

如何設置需要監測的程序

files 確定了除調用的 trace 之外其他需要追蹤的文件。files 必須是可調用的,並接受一個參數:文件路徑,同時如果應該追蹤該文件,則需要返回 True。為方便起見,這位開發者提供了以下函數:

files.all:追蹤所有文件;

files.path_contains(substrings):追蹤路徑中包含任何給定子字元串的所有文件;

files.contains_regex(pattern):追蹤自身包含給定正則表達式(regex)的所有文件,所以用戶可以在源代碼中標記所追蹤的文件,如添加註釋。

默認情況下追蹤包含注釋 # heartrate 的文件(空格可選)。

如果用戶要追蹤多個文件,則可通過以下兩種方式得到它們的可視化頁面:

在堆棧追蹤中,用戶點擊正在追蹤的堆棧條目,則可以打開頁面並跳轉至堆棧條目;

跳轉至 http://localhost:9999/ 網站的索引頁,從而查看追蹤文件列表。

host:伺服器的 HTTP host。若要運行可從任何地方訪問的遠程伺服器,使用"0.0.0.0"。默認為"127.0.0.1"。

port:伺服器的 HTTP 埠。默認為 9999。

browser:若為 True,則自動打開顯示文件(trace 被調用)可視化圖的瀏覽器標籤。默認為 False。

安裝

支持 Python 3.5 以上版本。

其他代碼可視化工具

機器之心還發現了一個可以可視化代碼執行過程的網站,名為 Pythontutor。和本文的 Heartrate 不同,該網站更多的是可視化數據在程序中的變化過程。

可視化的過程如下:

用戶還可以在網站上編輯修改代碼,觀察運行過程中數據的變化。同時該網站還有 Java 等其他語言的版本。

參考鏈接:https://github.com/alexmojaki/heartrate

本文為機器之心報道,轉載請聯繫本公眾號獲得授權。

------------------------------------------------

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

概念深奧看不懂?一文讀懂元學習原理
30位重磅嘉賓+24場主題演講,市北·GMIS 2019 明日開幕

TAG:機器之心 |