39

Python でコードのチャンクを実行するのにかかる時間を測定することに加えて、特定のコードのチャンクが必要とするメモリの量を測定する必要があります。

IPython には、次のtimeitように機能する便利なユーティリティがあります。

In [10]: timeit 3 + 3
10000000 loops, best of 3: 24 ns per loop

私が探しているのは次のようなものです:

In [10]: memit 3 + 3
10000000 loops, best of 3: 303 bytes per loop

これがおそらく IPython に組み込まれていないことは承知していますが、私はtimeit-のmemitアナロジーが好きです。

4

1 に答える 1

55

実際、実用的な名前のmemory_profilerパッケージの一部として、すでに存在しています。

In [2]: %memit np.zeros(1e7)
maximum of 3: 76.402344 MB per loop

詳細については、https://github.com/pythonprofilers/memory_profiler#ipython-integrationを参照してください。

編集:これを使用するには、まず IPython 拡張機能としてロードする必要があります。

%load_ext memory_profiler

IPython が起動時に常に memory_profiler 拡張機能をロードするようにするにc.InteractiveShellApp.extensionsは、プロファイルのリストに追加しますipython_config.py

$ grep -C2 c.InteractiveShellApp.extensions ~/.ipython/profile_default/ipython_config.py
 # A list of dotted module names of IPython extensions to load.
 #
 c.InteractiveShellApp.extensions = [
   'autoreload',
   'memory_profiler',
于 2013-10-01T00:16:20.563 に答える