Rechercher et supprimer des variables gourmandes en mémoire sur Jupyter (IPython)

Je veux vérifier / supprimer les variables qui consomment de la mémoire

Lors de l'analyse de données sur Jupyter (IPython), les données sont de plus en plus accumulées dans la mémoire, vous voulez donc vérifier les variables qui consomment la mémoire. Dans ce cas, si vous exécutez la commande suivante, les variables et la capacité mémoire des variables seront affichées dans une liste.

Python2


import sys

print "{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|')
print " ------------------------------------ "
for var_name in dir():
    if not var_name.startswith("_"):
        print "{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|')

Python3


import sys

print("{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|'))
print(" ------------------------------------ ")
for var_name in dir():
    if not var_name.startswith("_"):
        print("{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|'))

Le résultat de sortie ressemble à ce qui suit.


スクリーンショット 2017-01-03 17.34.11.png * * *

Cependant, avec cette commande, les résultats de toutes les variables définies sur Jupyter seront affichés, donc par exemple, si vous souhaitez extraire uniquement les variables dont la capacité mémoire est supérieure à une certaine valeur, procédez comme suit. Faire.

Python2


import sys

print "{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|')
print " ------------------------------------ "
for var_name in dir():
    if not var_name.startswith("_") and sys.getsizeof(eval(var_name)) > 10000: #Arrangez seulement ici
        print "{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|')

Python3


import sys

print("{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|'))
print(" ------------------------------------ ")
for var_name in dir():
    if not var_name.startswith("_") and sys.getsizeof(eval(var_name)) > 10000: #Arrangez seulement ici
        print("{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|'))

Puis


スクリーンショット 2017-01-03 17.39.00.png

Comme vous pouvez le voir, seules les variables avec une grande capacité de mémoire peuvent être extraites.

Si vous pouvez le faire jusqu'à présent,

del U_Global, V_Global

Vous pouvez spécifier des variables inutiles et les supprimer. Vous pouvez libérer la mémoire et poursuivre l'analyse confortablement sur Jupyter (IPython).

Remarques

Le titre dit "sur Jupyter (IPython)", mais je pense qu'il sera probablement affiché de la même manière sur d'autres interfaces. Cependant, comme il utilise str.format (), il doit s'agir de Python 2.6 ou supérieur pour une sortie correcte.

URL de référence

Recommended Posts

Rechercher et supprimer des variables gourmandes en mémoire sur Jupyter (IPython)
[Windows] [Python3] Installer python3 et Jupyter Notebook (anciennement ipython notebook) sous Windows
Installez Anaconda sur votre Mac et téléchargez votre notebook Jupyter (IPython) sur Anaconda Cloud
Installer matplotlib et afficher le graphique dans Jupyter Notebook
Lancer et utiliser le notebook IPython sur le réseau
Golang avec Jupyter
Jupyter sur AWS
Lancez facilement jupyter notebook sur AWS et accédez localement
Approvisionnement EC2 avec Vagrant + Jupyter (IPython Notebook) sur Docker
Crypter et enregistrer les données sur jupyter et décrypter si nécessaire