2016-08-09 21 views
0

Ich bin mit dem memory_profiler for python wie folgt:memory_profiler Anzeige nur Funktionsebene führt

from memory_profiler import profile 

@profile 
def my_func(): 
    ... 

Und es normal laufen.

Ausgabe sieht wie folgt aus (von docs genommen):

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 

Obwohl Ich mag würde es verkürzt werden Ebene funktionieren und aussehen ähnlich:

Line # Mem usage Increment Max   Line Contents 
============================================================== 
    4  13.61 MB 7.64 MB 166.20 MB  my_func() 
    20  23.26 MB 9.65 MB 56.20 MB  my_second_func() 

Ist das möglich?

+0

http://stackoverflow.com/questions/9850995/tracking-maximum-memory-usage-by-a-python-function – Sheena

Antwort

1

können Sie immer eine dritte Funktion

@profile 
def my_third_func(): 
    my_func() 
    my_second_func() 

und das Profil dieser Funktion definieren. Dies sollte die von Ihnen gesuchte Ausgabe liefern.

Wenn Sie nur an der maximalen Speicherbelegung der verschiedenen Funktionen interessiert sind, bietet mprof eine handliche visuelle Darstellung dafür.