るPythonメモリプロファイラ行き方は?[定休日]
-
02-07-2019 - |
質問
について教えてくださいメモリ使用量のPythonの応用および具体的にはどのコードブロック/部分やオブジェクトを消費で最も記憶です。Google検索して商業が Pythonメモリのバリデータ (Windowsのみ)。
いたもので、知りたかったんでは考:
を最ます。
していないまたは変更私のコードです。
解決
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.X
の server.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です。これにより、追跡のメモリ使用量は実行中に、別のオブジェクトいません。また、ツールを提供できる検索、ソースの解放されないオブジェクト。
の開発をしていメモリプロファイラのためのPythonというmemprof:
http://jmdana.github.io/memprof/
できる点にあるログインやプロットのメモリ使用量の変数の実行中に飾られます。るためには、ただひたすらの輸入の図書館を利用:
from memprof import memprof
を飾りを用いた方法:
@memprof
この例はどのようにプロット図のように見え:
のプロジェクトが開催GitHub:
うもの pytracemallocプロジェクト を提供するメモリ量のPythonのライン番号です。
編集(2014/04):とQt GUIを分析撮影をしました。