2017-07-26 7 views
1

私はMemory Profilerモジュールを使用して、thisという答えに続く私のpythonコードのメモリ使用量を取得しています。しかし、私は%memitの魔法の出力(またはモジュールの@profileデコレータ、またはmprof runを使った出力)を解釈することはできません。例えばpythonメモリプロファイラを理解しようとしています

%memit range(10000) 

%memit xrange(10000) 

peak memory: 97.46 MiB, increment: 0.00 MiBを示し、私にpeak memory: 97.41 MiB, increment: 0.24 MiB

中を与えます。 range()がリストを返すのではなく、xrange typeを返すxrangeの違いを理解しています。私はここで2つのシナリオを示すためにそれらを使用しました。

私の質問は

  1. peak memoryincrementが実際に何を意味するのですか?
  2. この出力からのスクリプト(または関数)の合計メモリ使用量はどのように報告しますか?
+0

賢いニックピック: 'xrange'はジェネレータを返しません。 –

+0

@ juanpa.arrivillaga:修正済み:D – Unni

答えて

3

ピークメモリは、プログラムランタイム中のシステムのピークメモリ使用量(他のプロセスのメモリ使用量を含む)を指します。

増分は、プログラムの実行直前のメモリ使用量(つまり、increment = peak memory-)に対するメモリ使用量の増加分です。

incrementと報告します。ピークメモリは、プログラム実行中にすべてのRAMをどれくらい使っているかを把握するのに役立ちます。

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 

%memit、本質的にあなたのライン6からメモリ使用量を与えているが、4行目にインクリメント相対を報告します。あなたはREADMEの使用セクションでライン・バイ・ラインの例を参照している場合

(実際には1行目ですが、おそらく1〜3行目には計算がありません)。

+0

ありがとうございました!それが私が推測していたものです。しかし、私はまだ確信していたかった。 – Unni

関連する問題