1. 程式人生 > >Memory Profiler:Python程式碼的記憶體分析器

Memory Profiler:Python程式碼的記憶體分析器

Memory_profiler是一個Python模組,可以監視一個程序的記憶體消耗,甚至可以一行一行的分析Python程式的記憶體消耗。它純粹是由Python實現,使用者可選psutil模組(強烈推薦)作為依賴。

示例

用@profile修飾你需要監視的函式,這裡my_func函式分配列表a和b,然後刪除b

Python
123456789@profiledefmy_func():a=[1]*(10**6)b=[2]*(2*10**7)delbreturnaif__name__=='__main__':my_func()

執行指令碼時需傳入-m memory_profiler引數

1 $python-mmemory_profilerexample.py

以上命令輸出如下

Python
1 2 3 4 5 6 7 8 Line# Mem usage Increment Line Contents ============================================== 3@profile 45.97MB0.00MBdefmy_func(): 513.61MB7.64MBa=[1]*(10**6) 6166.20MB152.59MBb=[2]*(2*10**7) 713.61
MB-152.59MBdelb 813.61MB0.00MBreturna

FAQ

Q:結果有多準確?
A:這個模組通過向作業系統核心查詢當前程序所分配記憶體大小來獲得記憶體消耗,可能與Python直譯器實際使用的記憶體大小稍有區別。而且由於Python的垃圾回收器的影響,結果可能會在不同平臺甚至不同執行之間有差別。
Q:在Windows下可用嗎?
A:是的,但是你需要psutil模組
github主頁:https://github.com/fabianp/memory_profiler