最近發現了一個Python程序執行的簡單實時可視化神器,名字叫 heartrate,安裝完運行可以看到下面這樣的炫酷過程。
雖然很炫酷,但有點看不懂。
來解釋下,左邊的動態數字代表每行被觸發的次數。變化的藍色條形圖代表了當時被觸發的行,較長的條形圖表示被觸發次數越多,越簽的顏色代表被觸發的時間越近。
heartrate 的代碼高亮部分主要是依賴了executing庫:
https://github.com/alexmojaki/executing
除此外,它還可以顯示實時堆棧跟蹤,有點意思。
▍安裝
pip install --user heartrate
該庫目前只支持Python 3.5以上的版本。
▍用法
import heartrate; heartrate.trace(browser=True)
敲完這一行代碼后,將會開始表演:
- 開始跟蹤程序
- 在線程中啟動服務器
- 打開一個瀏覽器窗口,顯示該文件的可視化位置。
在文件視圖中,堆棧跟蹤位於底部。在堆棧跟蹤中,可以單擊要跟蹤的文件的堆棧條目以在該行打開該文件的可視化。
trace 僅跟蹤調用它的線程。要跟蹤多個線程,必須在每個線程中調用它,每次都使用不同的端口。
▍更多操作
files
另外,該庫還有個files的功能,files 可以確定跟蹤哪些文件。
首先,它必須是可調用的,需要一個「文件路徑」的參數。如果該文件應該被跟蹤,則返回True,例如:
# 加在主程序里
from heartrate import trace, files
trace(files=files.path_contains('my_app', 'my_library'))
可以根據不同需要使用不同的跟蹤功能:
- files.all:跟蹤所有文件。
- files.path_contains(*substrings) :跟蹤路徑包含任何給定子字符串的所有文件。
- files.contains_regex(pattern) :跟蹤文件本身中包含給定正則表達式的所有文件,因此可以在源代碼中標記要跟蹤的文件,例如帶個注釋。
但默認為跟蹤包含注釋“ # heartrate”的文件。
如果要跟蹤多個文件,則可以通過兩種方式查看頁面的外觀:
- 在堆棧跟蹤中,單擊堆棧條目以查找要跟蹤的文件。這將打開頁面並跳到該堆棧條目中的行。
- 轉到位於http:// localhost:9999 /的索引頁(可以單擊左上角的徽標)以查看跟蹤文件的列表。
host
服務器的HTTP主機。要運行可從任何地方訪問的遠程服務器,請使用'0.0.0.0',默認'127.0.0.1'。
port
服務器的HTTP端口,默認9999。
browser
如果為True,則會自動打開一個瀏覽器選項卡,其中顯示了trace調用該文件的可視化效果,默認為False。
daemon
設置包含服務器的線程是否是守護線程。將其設置為true可以在程序其余部分完成后關閉服務器。
GitHub主頁: