Memory ProfilerPython 內(nèi)存分析器
Memory Profiler 是一個 python 模塊,用于監(jiān)視進(jìn)程的內(nèi)存消耗,甚至可以逐行分析 python 程序的內(nèi)存消耗。 它是一個純 python 模塊,并有 psutil 模塊作為可選(但強(qiáng)烈推薦)依賴。
Usage
line-by-line 內(nèi)存使用模式與 line_profiler 的使用方式非常相似:首先用 @profile 修飾你需要監(jiān)視的函數(shù),然后使用特殊腳本運行腳本。
在下面的示例中,我們創(chuàng)建一個簡單的函數(shù) my_func,它分配列表a、b,然后刪除 b:
@profile def my_func(): a = [1] * (10 ** 6) b = [2] * (2 * 10 ** 7) del b return a if __name__ == '__main__': my_func()
執(zhí)行將選項 -m memory_profiler 傳遞給 python 解釋器的代碼,以加載 memory_profiler 模塊并打印到 stdout 進(jìn)行逐行分析。 如果文件名是 example.py,這將導(dǎo)致:
$ python -m memory_profiler example.py
輸出如下:
Line # Mem usage Increment Line Contents ============================================== 3 @profile 4 5.97 MB 0.00 MB def my_func(): 5 13.61 MB 7.64 MB a = [1] * (10 ** 6) 6 166.20 MB 152.59 MB b = [2] * (2 * 10 ** 7) 7 13.61 MB -152.59 MB del b 8 13.61 MB 0.00 MB return a
第一列表示已經(jīng)概要分析的代碼的行號,第二列(Mem用法)表示 Python 解釋器在執(zhí)行該行之后的內(nèi)存使用情況。 第三列(增量)表示當(dāng)前行相對于最后一行的存儲器的差異。 最后一列打印已分析的代碼。
評論
圖片
表情
