推薦使用哪種Python內存分析器?


Answers

由於沒有人提到它,我將指向我的模塊memory_profiler ,它能夠memory_profiler打印內存使用情況報告,並在Unix和Windows上工作(需要在最後一頁上使用psutil)。 輸出不是非常詳細,但目標是讓您了解代碼消耗更多內存的位置,而不是對分配的對象進行詳盡的分析。

在使用@profile裝飾你的函數並使用-m memory_profiler標誌運行你的代碼之後,它將打印一行一行的報告,如下所示:

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
Question

我想知道我的Python應用程序的內存使用情況,特別想知道哪些代碼塊/部分或對象消耗了大部分內存。 谷歌搜索顯示,商業版本是Python Memory Validator (僅限Windows)。

而開源的是PySizerHeapy

我沒有嘗試任何人,所以我想知道哪一個是最好的考慮:

  1. 給出大部分細節。

  2. 我必須對我的代碼做最少或不做更改。




試試pytracemalloc項目 ,它提供了每個Python行號的內存使用情況。

編輯(2014/04):它現在有一個Qt GUI來分析快照。




考慮一下objgraph庫(有關示例用例,請參閱 )。




我發現meliae比Heapy或PySizer功能更強大。 如果你碰巧正在運行一個wsgi web應用程序,那麼Dozer就是一個很好的Dowser中間件包裝器






Links