usage - python view memory




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

Heapy使用Heapy相當簡單。 在代碼中的某個時刻,您必須編寫以下內容:

from guppy import hpy
h = hpy()
print h.heap()

這給你一些這樣的輸出:

Partition of a set of 132527 objects. Total size = 8301532 bytes.
Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
0  35144  27  2140412  26   2140412  26 str
1  38397  29  1309020  16   3449432  42 tuple
2    530   0   739856   9   4189288  50 dict (no owner)

你也可以從對像被引用的地方找出並獲得關於這些對象的統計信息,但不知何故文檔上的文檔有點稀疏。

還有一個圖形瀏覽器,用Tk編寫。

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

而開源的是PySizerHeapy

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

  1. 給出大部分細節。

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


Muppy是另一個Python內存使用情況分析器。 該工具集的重點在於識別內存洩漏。

Muppy試圖幫助開發人員識別Python應用程序的內存洩漏。 它可以在運行時跟踪內存使用情況,並識別洩漏的對象。 此外,還提供了一些工具,可以找到未發布對象的來源。


我正在為Python開發一個名為memprof的內存分析器:

http://jmdana.github.io/memprof/

它允許您在裝飾方法的執行過程中記錄和繪製變量的內存使用情況。 您只需使用以下命令導入庫:

from memprof import memprof

並使用以下方法來裝飾你的方法

@memprof

這是關於情節如何的例子:

該項目在GitHub中託管:

https://github.com/jmdana/memprof


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


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


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

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







profiling