Python-Objektspeicher effizient mit sys.getsizeof() messen
Mit sys.getsizeof() können Sie den Speicherverbrauch eines Python-Objekts überprüfen:
import sys
mylist = range(0, 10000)
print(sys.getsizeof(mylist)) # 48
Wow … warten Sie … warum belegt diese riesige Liste nur 48 Bytes?
Das liegt daran, dass die range()-Funktion ein Iterierbares zurückgibt, das sich wie eine Liste von Zahlen verhält, intern aber lediglich den letzten Iterationswert speichert. Ein range-Objekt ist deutlich speichereffizienter als eine tatsächliche Liste von Zahlen.
Sie können dies selbst überprüfen, indem Sie eine List Comprehension verwenden, um eine echte Python-Liste aus dem gleichen Bereich zu erstellen:
import sys
myreallist = [x for x in range(0, 10000)]
print(sys.getsizeof(myreallist)) # 87632
Das sind etwa 87 KB für 10.000 Zahlen – ein massiver Unterschied gegenüber den 48 Bytes des range-Objekts.
Wichtiger Hinweis
sys.getsizeof() misst nur die Größe des Objekte selbst, nicht die Größe der referenzierten Objekte. Bei Containern wie Listen oder Dictionaries werden die referenzierten Elemente nicht rekursiv mitgerechnet. Für eine vollständige Speicheranalyse sollten Sie das Modul pympler oder tracemalloc verwenden.
Python
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python pass-Statement meistern: Praxisleitfaden
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Pythons range()-Funktion meistern: Von Grundlagen bis zu fortgeschrittenen Anwendungsfällen
- Python time.sleep(): Delays in Ihrem Code hinzufügen (Beispiel)
- Datei- und Verzeichnisexistenz in Python prüfen – Ein praktischer Leitfaden
- Vierteljährlicher Supply-Chain-Gesundheitscheck: Für reibungslose Operationen sorgen
- Wichtige Frühlingsvorbereitung für Baumaschinen: Zeit sparen & Lebensdauer verlängern