Fuite de mémoire dans Python Jupyter Lab (Notebook)?

environnement

phénomène

J'utilise Jupyter Lab et après avoir défini une variable, del et gc.collect () ne libèrent pas la mémoire.

Procédure de reproduction

Écrivez le code suivant dans une cellule et exécutez-le.

import numpy as np
import pandas as pd
import psutil
print(psutil.Process().memory_info().rss / 1024**2)
df = pd.DataFrame(np.arange(50000000).reshape(-1,5))
df.head()

image.png

Notez que c'est df.head () à la fin.

Dans la cellule suivante

print(psutil.Process().memory_info().rss / 1024**2)
del df
print(psutil.Process().memory_info().rss / 1024**2)

image.png

L'état de la mémoire ne s'affiche pas immédiatement, alors vérifiez-le dans la cellule suivante au cas où.

print(psutil.Process().memory_info().rss / 1024**2)

image.png

image.png

Cause

Je pensais que c'était un problème avec pandas.DataFrame, mais ce n'est pas le cas. Lorsque la sortie est affichée par la fonction Jupyter Lab à la fin de la "cellule", il semble qu'elle ne sera pas libérée même si vous supprimez une autre cellule par la suite.

Solution

Ne pas df.head () à la fin de la cellule. Imprimez si vous souhaitez l'afficher.

image.png

commentaire

C'est une partie / un comportement qui vous met mal à l'aise, mais est-ce quelque chose dont vous faites attention lorsque vous commencez correctement avec Jupyter (je ne sais pas). ――J'ai pu enquêter et le confirmer à portée de main, mais la raison pour laquelle il n'est pas soumis à gc est de savoir si la référence est conservée dans la fonction d'affichage d'écran de jupyter ou autre. IPython semble en être la cause. Si le terme de recherche est une fuite de mémoire Jupyter, https://github.com/jupyter/notebook/issues/3713 apparaîtra, et il semble y avoir une explication (non vue).

Recommended Posts

Fuite de mémoire dans Python Jupyter Lab (Notebook)?
Générer le notebook Jupyter ".ipynb" en Python
Installation du laboratoire Python Jupyter
3 astuces du notebook Jupyter (Python)
Afficher le HTML dans le notebook Jupyter
Erreur de multitraitement dans Jupyter Notebook
notebook jupyter dans l'environnement venv python3.8
Rechercher les fuites de mémoire dans Python
Paramètres d'extrait de code pour le notebook jupyter python
Mémo Python Anaconda x Jupyter Notebook
[Python] Générer un code QR en mémoire
Afficher les graphiques en ligne dans Jupyter Notebook
Bloc-notes Jupyter facile à utiliser (Python3.5)
Jupyter Notebook 6.0.2 ne peut pas être installé dans l'environnement Python 2.7 créé dans Anaconda
Gérez plusieurs versions de python en un seul jupyter
Créer un environnement Jupyter Lab (Python) avec Docker
Utiliser Jupyter Lab et Jupyter Notebook avec EC2
Comment exécuter des commandes avec Jupyter Notebook
Lors de l'examen de l'utilisation de la mémoire dans Python 3
Lier Python et JavaScript avec le notebook Jupyter
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
SendKeys en Python
Mémo Jupyter Notebook
[Jupyter Notebook / Lab] Trois méthodes de débogage sur Jupyter [Pdb]
Présentation de Jupyter Notebook
Méta-analyse en Python
Unittest en Python
Jupyter Lab commence
Comment implémenter la mémoire partagée en Python (mmap.mmap)
Spécification du navigateur Jupyter Notebook dans un environnement Windows
Époque en Python
Discord en Python
Puissant ordinateur portable Jupyter
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Bash dans Jupyter
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
Mot de passe du notebook Jupyter
Mémo Jupyter Notebook
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python