星期日, 9月 24, 2017

Python profiling decorator

前幾天想知道我 Django 程式裡某段函式的瓶頸,所以查了 Django 怎麼做 profiling 。是有查到有 jazzband/silk: Silky smooth profiling for Django 這個 package ,但是有點太大。如果是用常找到的
python -m cProfile xxx.py xxx.py
,Django 程式又不太適合。畢竟我只是想查某個函式而已。所以後來查到這兩個 decorator:
使用上很簡單,程式放進去,在想做 profiling 的函式前加上 decorator 就可以了。
我用的是第一個,在加上 decorator,執行過程式(應該說是瀏覽網頁)以後,在程式當前資料夾裡會找到 .profile 的檔案,為了後續方便說明,假設產生出來是 func.profile 。有這個檔案以後,就可以用
python -m pstats func.profile
開啟,開啟以後,是 pstats 的 shell ,一般要查哪個地方花的時間最多,會用
sort time
依照執行花費時間來排序,再用
stats 10
列出前十個花費時間最多的函式。
參考資料:

沒有留言: