使用line_profiler工具分析python代碼性能以及性能調優

line_profiler是一個對函數進行逐行分析的模塊,kernprof是一個可以運行line_profiler或者python標準庫cProfile的一個很方便的腳本工具。

安裝:
$ pip install line_profiler
遇到錯誤提示沒有Cpython,安裝一下:
pip install Cpython
繼續報錯:command 'x86_64-linux-gnu-gcc' failed with exit status 1
解決方案:https://github.com/scrapy/scrapy/issues/2115 裏面的sudo apt install python3.6-dev解決了問題

首先使用kernprof腳本運行來開始我們的性能優化工作:

kernprof -l run.py

上面的操作會創建一個LineProfiler的實例並且會把它插入到命名空間裏面。然後它能以裝飾器的方式來使用,所以我們只需要把我們需要分析的函數上面套上這個裝飾器:

@profile
def func_need_profile(*args, **kwargs):
	...

這裏直接加上裝飾器,不需要在代碼裏面額外import任何東西。

kernprof會把分析的結果放在script_to_profile.py.lprof這個二進制文件裏面,然後我們可以去看這個分析結果:

python -m line_profiler run.py.lprof
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章