So überprüfen Sie die Speichergröße eines Wörterbuchs in Python

Hallo, das ist Ninomiya von LIFULL CO., LTD. Der Adventskalender des letzten Jahres wurde zurückgelassen ist ein Bedauern, daher werde ich ihn veröffentlichen, obwohl es sich um eine kleine Geschichte handelt.

Während einer Implementierung musste ich eine grobe Schätzung der Speichernutzung einer Variablen erhalten. Wie in diesem Artikel vorgestellt, kann sys.getsizeof die Größe einer Variablen im Speicher anzeigen.

import sys

print(sys.getsizeof({"key": "a"}))
# => 248

#Der gleiche Wert wird angezeigt, obwohl die Schriftgröße offensichtlich groß ist
print(sys.getsizeof({"key": "a" * 10000}))
# => 248

Da der Inhalt des Python-Wörterbuchs "eine Hash-Tabelle ist, in der ein Verweis auf ein Objekt gespeichert ist", wird die speicherinterne Größe der darin enthaltenen Zeichenfolge nicht berücksichtigt. Ich denke, dieser Artikel wird für diese Geschichte hilfreich sein.

(Ich konnte nur gute Artikel auf Japanisch für Ruby finden. Die Geschichte hier ist jedoch sowohl Ruby als auch Python gemeinsam.)

Informationen zur Größe der darin enthaltenen Objekte finden Sie in dem Artikel, der hier in den [offiziellen Dokumenten] verlinkt ist (https://docs.python.org/ja/3/library/sys.html#sys.getsizeof). Muss implementiert werden.

Ein Beispiel für die rekursive Verwendung von "getsizeof ()" zur Bestimmung der Größe eines Containers und seines Inhalts finden Sie unter "Rekursive" Größe des Rezepts [https://code.activestate.com/recipes/577504/). bitte beziehen Sie sich auf.

In meinem Fall war es jedoch ein Wörterbuch, das nur Zeichenfolgen enthielt (die in json serialisiert werden können), und ich wollte nur den ungefähren Wert wissen, also [StackOverflow hier](https://stackoverflow.com/questions/6579757/memory- Nach dem Schreiben von "use-of-dictionary-in-python") kam ich zu dem Ergebnis von "json.dumps".

>>> first = 'abc'*1000
>>> second = 'def'*1000
>>> my_dictionary = {'first': first, 'second': second}
>>> getsizeof(first)
3049
>>> getsizeof(second)
3049
>>> getsizeof(my_dictionary)
288
>>> getsizeof(json.dumps(my_dictionary))
6076
>>> size = getsizeof(my_dictionary)
>>> size += sum(map(getsizeof, my_dictionary.values())) + sum(map(getsizeof, my_dictionary.keys()))
>>> size
6495

Referenzartikel

Recommended Posts

So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
So überprüfen Sie die Speichergröße einer Variablen in Python
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
[Python] So überprüfen Sie, ob der Schlüssel im Wörterbuch vorhanden ist
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
So bestimmen Sie die Existenz eines Selenelements in Python
So überprüfen Sie anhand des Hashwerts, ob der Inhalt des Wörterbuchs in Python identisch ist
So ermitteln Sie die Anzahl der Stellen in Python
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Wie man eine Benutzergruppe mit Slack-Benachrichtigung erwähnt, wie man die ID einer Benutzergruppe überprüft
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Verwendung der Methode __call__ in der Python-Klasse
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
Überprüfen Sie das Verhalten des Zerstörers in Python
So überprüfen Sie die Version von Django
Wie bekomme ich Stacktrace in Python?
So überprüfen Sie die Version von opencv mit Python
Wie Sie die interne Struktur eines Objekts in Python kennen
[TensorFlow 2] So überprüfen Sie den Inhalt von Tensor im Diagrammmodus
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
Übergeben des Ausführungsergebnisses eines Shell-Befehls in einer Liste in Python (nicht blockierende Version)
So berechnen Sie die Volatilität einer Marke
Verwendung der C-Bibliothek in Python
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
Holen Sie sich den Aufrufer einer Funktion in Python
So erstellen Sie eine JSON-Datei in Python
Kopieren Sie die Liste in Python
Zusammenfassung der Verwendung von MNIST mit Python
So benachrichtigen Sie Discord-Kanäle in Python
So erhalten Sie Elemente vom Typ Wörterbuch von Python 2.7
So erhalten Sie die Dateien im Ordner [Python]
Ausgabe in Form eines Python-Arrays
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
[Python] So legen Sie die Position und Größe der Fensteranzeige von matplotlib fest
[Python] So fügen Sie eine beliebige Anzahl von Standardeingaben in die Liste ein
Überprüfen Sie die speicherinterne Byte-Zeichenfolge der Gleitkommazahl in Python
So formatieren Sie eine Liste von Wörterbüchern (oder Instanzen) in Python
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
Einfache Möglichkeit, die Quelle der Python-Module zu überprüfen
So rufen Sie den n-ten größten Wert in Python ab
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So erhalten Sie den Variablennamen selbst in Python
Erstellen Sie ein Wörterbuch in Python
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
Wie Sie das aktuelle Verzeichnis in Python in Blender kennen
[Python] So erweitern Sie Variablen in einer Zeichenfolge
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook