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