[Python] 用 pyprof2calltree+qcachegrind 將 profiling 結果視覺化
在對 Python 程式做效能最佳化時,我們可以用 Profile+gprof2dot 將 profiling 結果視覺化,
不過後來發現也還有別的方法可以視覺化,還可以少掉一個 dot 轉 png 的步驟,
那就是利用 pyprof2calltree 和 qcachegrind (kcachegrind)~
1. 安裝 pyprof2calltree 和 qcachegrind
用 pip 安裝 pyprof2calltree:
pip install pyprof2calltree
接著要安裝 qcachegrind,這是 kcachegrind 包含的其中一隻程式,
原本 kcachegrind 是在 Linux 上使用的,
但在 Mac 上要編譯 kcachegrind 好像很難,因此通常是改用 qcachegrind (QT 版本)~
幸運的是 Homebrew 裡面已經有 qcachegrind 直接可用了:
brew install qcachegrind
2. 執行 pyprof2calltree
依照 用 Profile+gprof2dot 將 profiling 結果視覺化 這篇裡的方法,
先產生出 pstats 檔案後,就可以直接呼叫 pyprof2calltree 來視覺化這個 pstats 檔,
而不需要先轉成 dot 資料,再轉成 PNG 圖檔~
下面的 -i 參數是指定輸入的 pstats 檔,-k 則是直接呼叫出 qcachegrind (或 kcachegrind):
pyprof2calltree -i profile.pstats -k
一個蠻漂亮的 GUI 程式會跑出來,
點到 Call Graph 分頁,就可以看到蠻類似 GraphViz 跑出來的圖啦,
少了 dot 轉 PNG 的步驟,也算是蠻方便的選擇喔~
參考資料:Profiling Python using cProfile: a concrete case
(本頁面已被瀏覽過 1,064 次)