Python代碼的內存分析器:Memory_profiler

jopen 10年前發布 | 38K 次閱讀 Python開發 Memory_profiler

Memory_profiler是一個Python模塊,可以監視一個進程的內存消耗,甚至可以一行一行的分析Python程序的內存消耗。它純粹是由Python實現,用戶可選psutil模塊(強烈推薦)作為依賴。

示例

用@profile修飾你需要監視的函數,這里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()

運行腳本時需傳入-m memory_profiler參數

$ 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

FAQ

Q:結果有多準確?
A:這個模塊通過向操作系統內核查詢當前進程所分配內存大小來獲得內存消耗,可能與Python解釋器實際使用的內存大小稍有區別。而且由于Python的垃圾回收器的影響,結果可能會在不同平臺甚至不同運行之間有差別。
Q:在Windows下可用嗎?
A:是的,但是你需要psutil模塊

項目主頁:http://www.baiduhome.net/lib/view/home/1404268960374

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!