Comment vérifier la taille de la mémoire d'un dictionnaire en Python

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 Recursive sizeof 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

Article de référence

Recommended Posts

Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment vérifier la taille de la mémoire d'une variable en Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
[python] Comment vérifier si la clé existe dans le dictionnaire
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment déterminer l'existence d'un élément sélénium en Python
Comment vérifier si le contenu du dictionnaire est le même en Python par valeur de hachage
Comment obtenir le nombre de chiffres en Python
Comment écrire un type liste / dictionnaire de Python3
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment mentionner un groupe d'utilisateurs avec une notification de mou, comment vérifier l'ID d'un groupe d'utilisateurs
Comment obtenir une liste de fichiers dans le même répertoire avec python
Comment utiliser la méthode __call__ dans la classe Python
Comment développer dans un environnement virtuel Python [Memo]
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir une liste d'exceptions intégrées pour python
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Vérifiez le comportement du destroyer en Python
Comment vérifier la version de Django
Comment obtenir stacktrace en python
Comment vérifier la version d'opencv avec python
Comment connaître la structure interne d'un objet en Python
[TensorFlow 2] Comment vérifier le contenu de Tensor en mode graphique
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python (version non bloquante)
Comment calculer la volatilité d'une marque
Comment utiliser la bibliothèque C en Python
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Récupérer l'appelant d'une fonction en Python
Comment créer un fichier JSON en Python
Copiez la liste en Python
Résumé de l'utilisation de MNIST avec Python
Comment notifier les canaux Discord en Python
Comment obtenir des éléments de type dictionnaire de Python 2.7
Comment obtenir les fichiers dans le dossier [Python]
Sortie sous la forme d'un tableau python
[Python] Comment dessiner un histogramme avec Matplotlib
[Python] Comment spécifier la position d'affichage de la fenêtre et la taille de matplotlib
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python
Comment bien formater une liste de dictionnaires (ou d'instances) en Python
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Vérifiez si la chaîne est un nombre en python
Un moyen simple de vérifier la source des modules Python
Comment récupérer la nième plus grande valeur en Python
Comment convertir / restaurer une chaîne avec [] en python
Comment obtenir le nom de la variable lui-même en python
Créer un dictionnaire en Python
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Comment connaître le répertoire actuel en Python dans Blender
[Python] Comment développer des variables dans une chaîne de caractères
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
Obtenir la taille (nombre d'éléments) de Union Find en Python
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook