質問

について教えてくださいメモリ使用量のPythonの応用および具体的にはどのコードブロック/部分やオブジェクトを消費で最も記憶です。Google検索して商業が Pythonメモリのバリデータ (Windowsのみ)。

オープンソースのもの PySizerHeapy.

いたもので、知りたかったんでは考:

  1. を最ます。

  2. していないまたは変更私のコードです。

役に立ちましたか?

解決

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)

にありますから物を参照しているという、何とかdocsに少疎になります。

あるグラフィカルなブラウザとして、書き出します。

他のヒント

以来、誰もういいポイントは私のモジュール 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

私のおすすめ Dowser.とても簡単にセットアップ、および必要な変更をコードです。眺望できるカウントの物体の種類、時間を通じての一覧を表示するライブジビューを参照の生物は、全ての簡単なウェブインタフェース。

# memdebug.py

import cherrypy
import dowser

def start(port):
    cherrypy.tree.mount(dowser.Root())
    cherrypy.config.update({
        'environment': 'embedded',
        'server.socket_port': port
    })
    cherrypy.server.quickstart()
    cherrypy.engine.start(blocking=False)

輸入memdebug、memdebug.が始まります。ることはありません。

いたPySizerはHeapy.いただければ幸いその他のレビュー.

更新

上記のコードは CherryPy 2.X, CherryPy 3.Xserver.quickstart 法外 engine.start なの blocking フラグ。でご利用の場合 CherryPy 3.X

# memdebug.py

import cherrypy
import dowser

def start(port):
    cherrypy.tree.mount(dowser.Root())
    cherrypy.config.update({
        'environment': 'embedded',
        'server.socket_port': port
    })
    cherrypy.engine.start()

を考慮する objgraph 図書館を参照 http://www.lshift.net/blog/2008/11/14/tracing-python-memory-leaks 例利用の場合)。

Muppy す(な)メモリ使用量プロファイラのためのブランド、。このパワフルなツールセットのある特定のメモリ解放されます。

Muppyに努め開発者のアイデンティティの管理メモリリークのPythonです。これにより、追跡のメモリ使用量は実行中に、別のオブジェクトいません。また、ツールを提供できる検索、ソースの解放されないオブジェクト。

meliae これよりもより機能的HeapyはPySizer.せてもらう良い機会になりそうだから、wsgi webapp、 ドーザー 素敵なミドルウェアのラッパーのDowser

の開発をしていメモリプロファイラのためのPythonというmemprof:

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

できる点にあるログインやプロットのメモリ使用量の変数の実行中に飾られます。るためには、ただひたすらの輸入の図書館を利用:

from memprof import memprof

を飾りを用いた方法:

@memprof

この例はどのようにプロット図のように見え:

enter image description here

のプロジェクトが開催GitHub:

https://github.com/jmdana/memprof

うもの pytracemallocプロジェクト を提供するメモリ量のPythonのライン番号です。

編集(2014/04):とQt GUIを分析撮影をしました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top