memory_profiler
是一個用來測量 Python 程式記憶體使用情況的工具,它可以幫助開發者了解程式的記憶體消耗,特別是在執行長時間運行或處理大量數據的程式時非常有用。
有別於tracemalloc
模組,memory_profiler
能在每一行程式碼上顯示記憶體變化,但相對的就不適合埋在程式內長期監控用,因為很吃效能,比較適合分析大範圍的記憶體使用情況,比如檢測程式中哪些操作消耗了大量的記憶體。特別適合處理大數據集或進行大量數據處理的應用。
tracemalloc
模組文章[Python]使用tracemalloc 模組來比較兩種不同方法所佔用的記憶體大小
memory_profiler
提供了詳細的函數層級的記憶體使用追蹤報告,並可用來檢查程式中哪些部分消耗較多的記憶體。
要使用 memory_profiler
,首先需要安裝它:
pip install memory-profiler
memory_profiler
的使用方式主要有兩種:
@profile
裝飾器來標記需要追蹤的函數。mprof
來進行更全面的記憶體分析。@profile
裝飾器@profile
裝飾器來標記想要追蹤記憶體使用的函數。python -m memory_profiler your_script.py
執行該檔案。from memory_profiler import profile
@profile
def my_func():
a = [1] * (10**6) # 佔用較多記憶體
b = [2] * (2 * 10**7) # 佔用更多記憶體
del b # 釋放記憶體
return a
if __name__ == "__main__":
my_func()
當你執行這段程式碼時,memory_profiler
會提供記憶體使用的詳細資訊,像是每一行程式碼執行時記憶體的變化。
執行指令:
python -m memory_profiler your_script.py
del
語句釋放了內存)。mprof
進行全面分析除了 @profile
裝飾器外,你也可以使用 mprof
來追蹤整個程式的記憶體使用情況,並生成圖表。
mprof run your_script.py
mprof plot
這將會產生一個圖形,顯示隨著時間變化的記憶體使用情況
memory_profiler
,可以通過以下指令安裝它:pip install memory-profiler
%load_ext
命令來加載 memory_profiler
的魔術命令。%load_ext memory_profiler
%mprun
魔術命令,指定你要分析的函數。