Wie kann ich die Speicherauslastung eines Objekts in Python messen?

8

Ich habe eine Python-Klasse "foo", die enthält:

  • Daten (ints, floats)
  • Listen (von Ints, von Floats und von anderen Objekten)
  • Wörterbücher (von Ints, von Floats, von anderen Objekten)

Angenommen, es gibt keine Rückverweise (Zyklen), gibt es eine einfache Möglichkeit, die Gesamtspeicherauslastung eines "foo" -Objekts zu messen?

Im Wesentlichen suche ich nach einer rekursiven Version von "sys.getsizeof"

Einige der Tools, auf die ich stieß, waren: heapy, objgraph und gc, aber ich denke nicht, dass einer von ihnen der Aufgabe gewachsen ist (ich kann das korrigieren)

Vorschläge geschätzt!

    
Ciaran 16.02.2011, 22:07
quelle

2 Antworten

16

Probieren Sie Pympler aus, das sich selbst als "Ein Entwicklungswerkzeug zum Messen, Überwachen und Analysieren des Speichers" beschreibt Verhalten von Python-Objekten. "

Etwas nach dem Motto

%Vor%

hat mir in der Vergangenheit geholfen.

Sie können SO suchen , um weitere Informationen zu erhalten - hier ist ein Empfehlung von Alex Martelli.

    
Scott Griffiths 16.02.2011 23:38
quelle
1

Ich bin mir nicht sicher, ob Sie versuchen, die Größe des Typs oder des tatsächlichen komplexen Objekts zu ermitteln, aber wenn Sie sich die Größe von gotsizeof ansehen, verweist die Dokumentation auf dieses Rezept für eine robuste rekursive Version:

Ссылка

Ich würde also annehmen, dass es keinen 'stock' Python-Aufruf gibt, der das tut, sonst würden die Docs es erwähnen.

    
Oren Mazor 16.02.2011 22:23
quelle

Tags und Links