Bonjour, c'est Ninomiya de LIFULL CO., LTD. Laissé derrière le calendrier de l'Avent de l'année dernière est un regret, donc je le posterai bien que ce soit une petite histoire.
Lors d'une implémentation, j'avais besoin d'obtenir une estimation approximative de l'utilisation de la mémoire d'une variable. Comme présenté dans cet article, sys.getsizeof
peut afficher la taille d'une variable en mémoire.
import sys
print(sys.getsizeof({"key": "a"}))
# => 248
#La même valeur apparaît même si la taille de la police est évidemment grande
print(sys.getsizeof({"key": "a" * 10000}))
# => 248
Parce que la substance du dictionnaire Python est "une table de hachage qui stocke une référence à un objet", et la taille en mémoire de la chaîne à l'intérieur n'est pas prise en compte. Je pense que cet article sera utile pour cette histoire.
(Je n'ai pu trouver que de bons articles en japonais pour Ruby. Cependant, l'histoire ici est commune à Ruby et Python.)
Pour considérer la taille des objets à l'intérieur, reportez-vous à l'article lié ici dans les Documents officiels. Doit être implémenté.
Pour un exemple d'utilisation récursive de
getsizeof ()
pour déterminer la taille d'un conteneur et son contenu, voir Recursivesizeof
Recipe [https://code.activestate.com/recipes/577504/) prière de se référer à.
Cependant, dans mon cas, c'était un dictionnaire contenant uniquement des chaînes de caractères (qui peuvent être sérialisées en json), et je voulais juste connaître la valeur approximative, donc [StackOverflow here](https://stackoverflow.com/questions/6579757/memory- J'ai suivi l'écriture de usage-of-dictionary-in-python) et j'ai fini avec le résultat de 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
Recommended Posts