J'utilisais Jupyter-notebook avec la dernière version d'Anaconda (2018.12) et j'ai remarqué qu'il utilisait une énorme quantité de mémoire (environ 6 Go) pour faire des graphiques et enregistrer directement ~2000 figures (1920x1080) en fichiers .png sous Ubuntu 18.04.
J'ai essayé de reproduire ce problème sur mon Mac avec Anaconda 4.4.0, mais le problème ne s'est pas produit.
Plus tard, j'ai essayé d'installer plusieurs versions différentes d'Anaconda sur ma machine Ubuntu et j'ai réussi à reproduire le problème de fuite de mémoire avec un code plus simple.
Il s'est avéré qu'Anaconda 5.0.0 est la dernière version qui n'a pas ce problème spécifique de fuite de mémoire.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,1,101)
n = 0
dt = 0.01
w = 1
while n <= 1000:
y = np.sin(2*np.pi*x + w*n*dt)
plt.clf()
plt.title("T = %.02f s." %(n*dt))
plt.plot(x,y)
plt.savefig("dat/dat_%05d.png" % (n))
plt.close()
n = n+1
J'utilise htop pour surveiller l'utilisation de la mémoire.
Avec Anaconda 5.0.0, cela montre une utilisation constante de 1,3% de la mémoire sur ma machine avec 8 Go de RAM.
Avec Anaconda 5.1.0, l'utilisation de la mémoire commence à environ 2% et augmente rapidement au fur et à mesure qu'il enregistre les graphiques en fichiers .png, atteignant 16% d'utilisation de la mémoire, et reste le même même après la fin de l'exécution de la cellule.
J'ai essayé d'utiliser
import gc
gc.collect()
et l'utilisation de la mémoire diminue un peu jusqu'à 12%.
Et bien sûr, par utilisation de la mémoire, je veux dire une utilisation de la mémoire uniquement par ces processus python particuliers, pas l'utilisation de mémoire de tout le système.
Est-ce que quelqu'un a déjà réussi à résoudre ce problème de fuite de mémoire dans jupyter-notebook inclus dans la dernière version d'Anaconda ?