[PYTHON] Comment gérer les fuites de mémoire dans matplotlib.pyplot

Vous pouvez éviter les fuites de mémoire en créant et en arrêtant le processus de dessin séparément, comme indiqué ci-dessous.

from multiprocessing import Pool
import matplotlib.pyplot as plt
import numpy as np

#Méthode de traçage
# plt.clf()・ Plt.close()La mémoire est automatiquement libérée lorsque le processus se termine sans cela.
def plot(args):
    x, y = args
    plt.plot(x, y)

#Valeur à tracer
x = np.arange(1e7)
y = np.arange(1e7)

#Créez un processus de traçage et effectuez un traitement de dessin dedans
p = Pool(1)
p.map(plot, [[x,y]])
p.close()

Vous pouvez vérifier si la mémoire est réellement libérée avec le code suivant.

from multiprocessing import Pool
import matplotlib.pyplot as plt
import numpy as np

#Méthode de traçage
# plt.clf()・ Plt.close()La mémoire est automatiquement libérée lorsque le processus se termine sans cela.
def plot(args):
    
    x, y = args
    plt.plot(x, y)
    
    #Vous pouvez effectuer les opérations suivantes pour vérification
    plt.tight_layout()
    plt.savefig('aa.jpeg')

#Tracez 10 fois pour voir si l'utilisation de la mémoire change
for i in range(10):
    
    #Valeur à tracer
    x = np.arange(1e7)
    y = np.arange(1e7)
    
    #Créez un processus de traçage et effectuez un traitement de dessin dedans
    p = Pool(1)
    p.map(plot, [[x,y]])
    p.close()
    
    #Afficher l'utilisation de la mémoire
    import psutil
    mem = psutil.virtual_memory().free / 1e9
    print(i, f'memory used: {mem} [GB]')

À propos, une fuite de mémoire se produit dans les cas suivants, par exemple. (Référence: la mémoire ne peut pas être libérée uniquement par plt.close () -Qiita)

--Si vous ne faites que plt.close () '' --Si vous faites plt.clf () plt.close () '', mais que vous faites plt.tight_layout () '' ou plt.savefig () ''

Recommended Posts

Comment gérer les fuites de mémoire dans matplotlib.pyplot
Comment gérer les erreurs d'exécution dans subprocess.call
Comment gérer l'échec de l'initialisation pyenv dans Fish 3.1.0
Comment gérer l'exécution de la transaction: échec dans Anaconda
Comment gérer les données déséquilibrées
Comment gérer l'erreur DistributionNotFound
[AWS] Comment gérer l'erreur "Point de code non valide" dans CloudSearch
Pour les débutants, comment gérer les erreurs courantes dans les keras
Comment utiliser BigQuery en Python
Comment gérer les erreurs de compatibilité d'énumération
Comment gérer l'erreur d'installation de python dans pyenv (BUILD FAILED)
Comment réduire l'utilisation de la mémoire GPU avec Keras
Comment gérer les erreurs en frappant pip ②
[REAPER] Comment jouer à Reascript avec Python
Comment implémenter la mémoire partagée en Python (mmap.mmap)
ne peut pas décaper. Comment gérer les objets Annoy
Comment gérer le module 'Sensorflow' n'a aucun attribut '
Comment utiliser tkinter avec python dans pyenv
Comment gérer les caractères déformés dans json de Django REST Framework
Que faire lorsque la version Python est ancienne dans Cloud 9 créée par une autre personne
Comment traiter l'erreur "Aucun module nommé" "" dans Jupyter Notebook | Installer avec! Pip!
Comment convertir / restaurer une chaîne avec [] en python
Comment faire un calcul de hachage avec Salt en Python
Expliquez en détail comment créer un son avec python
La solution de contournement pour le modèle de Django n'existe pas
Comment faire du zéro-padding sur une ligne avec OpenCV
Comment exécuter des tests avec Python unittest
Comment charger des fichiers dans Google Drive avec Google Colaboratory
Comment accéder avec cache lors de la lecture_json avec pandas
[Python] Comment gérer l'erreur de lecture pandas read_html
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Rechercher les fuites de mémoire avec objgraph
Comment faire RDP sur Fedora31
Comment développer en Python
2 façons de gérer SessionNotCreatedException
Comment supprimer avec SQLAlchemy?
[TensorFlow 2 / Keras] Comment exécuter l'apprentissage avec CTC Loss dans Keras
Comment sortir un document au format pdf avec Sphinx
Comment extraire n'importe quel rendez-vous dans Google Agenda avec Python
Comment vérifier le comportement d'ORM avec un fichier avec django
[Django] Comment donner des valeurs d'entrée à l'avance avec ModelForm
Comment manipuler le DOM dans iframe avec Selenium
Une histoire sur la façon de traiter le problème CORS
Comment créer une trame de données et jouer avec des éléments avec des pandas
Comment gérer UnicodeDecodeError lors de l'exécution du téléchargement d'image Google
Comment se connecter à AtCoder avec Python et soumettre automatiquement
[VLC] Comment gérer le problème de ne pas être au premier plan pendant la lecture
Rechercher les fuites de mémoire dans Python
Comment annuler RT avec Tweepy
[Python] Comment faire PCA avec Python
Comment gérer une session dans SQLAlchemy
Python: comment utiliser async avec