[PYTHON] Umgang mit Speicherlecks in matplotlib.pyplot

Sie können Speicherverluste verhindern, indem Sie den Zeichenvorgang wie unten gezeigt separat erstellen und beenden.

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

#Methode zum Plotten
# plt.clf()・ Plt.close()Der Speicher wird automatisch freigegeben, wenn der Vorgang ohne dies beendet wird.
def plot(args):
    x, y = args
    plt.plot(x, y)

#Wert zum Plotten
x = np.arange(1e7)
y = np.arange(1e7)

#Erstellen Sie einen Prozess zum Plotten und führen Sie darin eine Zeichnungsverarbeitung durch
p = Pool(1)
p.map(plot, [[x,y]])
p.close()

Mit dem folgenden Code können Sie überprüfen, ob der Speicher tatsächlich freigegeben ist.

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

#Methode zum Plotten
# plt.clf()・ Plt.close()Der Speicher wird automatisch freigegeben, wenn der Vorgang ohne dies beendet wird.
def plot(args):
    
    x, y = args
    plt.plot(x, y)
    
    #Sie können zur Überprüfung Folgendes tun
    plt.tight_layout()
    plt.savefig('aa.jpeg')

#Zeichnen Sie 10 Mal, um festzustellen, ob sich die Speichernutzung ändert
for i in range(10):
    
    #Wert zum Plotten
    x = np.arange(1e7)
    y = np.arange(1e7)
    
    #Erstellen Sie einen Prozess zum Plotten und führen Sie darin eine Zeichnungsverarbeitung durch
    p = Pool(1)
    p.map(plot, [[x,y]])
    p.close()
    
    #Speichernutzung anzeigen
    import psutil
    mem = psutil.virtual_memory().free / 1e9
    print(i, f'memory used: {mem} [GB]')

Übrigens tritt beispielsweise in den folgenden Fällen ein Speicherverlust auf. (Referenz: Der Speicher wird möglicherweise nicht nur von [plt.close () -Qiita] freigegeben (https://qiita.com/Masahiro_T/items/bdd0482a8efd84cdd270))

Recommended Posts

Umgang mit Speicherlecks in matplotlib.pyplot
Umgang mit Laufzeitfehlern in subprocess.call
Umgang mit Pyenv-Initialisierungsfehlern bei Fischen 3.1.0
Vorgehensweise beim Ausführen von Transaktionen: In Anaconda fehlgeschlagen
Umgang mit unausgeglichenen Daten
Umgang mit dem DistributionNotFound-Fehler
[AWS] Umgang mit dem Fehler "Ungültiger Codepunkt" in CloudSearch
Für Anfänger, wie man mit häufigen Fehlern in Keras umgeht
So arbeiten Sie mit BigQuery in Python
Umgang mit Enum-Kompatibilitätsfehlern
Wie man mit Python-Installationsfehlern in pyenv umgeht (BUILD FAILED)
So reduzieren Sie die GPU-Speichernutzung mit Keras
Umgang mit Fehlern beim Auftreffen auf pip pip
[REAPER] Wie man Reascript mit Python spielt
So implementieren Sie Shared Memory in Python (mmap.mmap)
Ich kann nicht nerven. Wie man mit nervigen Objekten umgeht
Der Umgang mit dem Modul'tensorflow 'hat kein Attribut' '
Wie man tkinter mit Python in Pyenv benutzt
Wie man mit verstümmelten Charakteren in json von Django REST Framework umgeht
Was tun, wenn die Python-Version in Cloud 9 von einer anderen Person erstellt wurde?
So behandeln Sie den Fehler "Kein Modul mit dem Namen '' '" in Jupyter Notebook | Install with! Pip!
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So führen Sie eine Hash-Berechnung mit Salt in Python durch
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
Problemumgehung für Djangos Vorlage existiert nicht
So führen Sie mit OpenCV ein Null-Padding in einer Zeile durch
So führen Sie Tests zusammen mit Python unittest aus
So laden Sie Dateien in Google Drive mit Google Colaboratory
Zugriff mit dem Cache beim Lesen von_json mit Pandas
[Python] Umgang mit Pandas read_html Lesefehler
Wie aktualisiere ich mit SQLAlchemy?
Wie man mit Theano besetzt
Wie mit SQLAlchemy ändern?
So trennen Sie Zeichenfolgen mit ','
Untersuchen Sie Speicherlecks mit objgraph
Wie man RDP auf Fedora31 macht
Wie man in Python entwickelt
2 Möglichkeiten, mit SessionNotCreatedException umzugehen
Wie lösche ich mit SQLAlchemy?
[TensorFlow 2 / Keras] Ausführen des Lernens mit CTC Loss in Keras
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
So extrahieren Sie einen Termin in Google Kalender mit Python
So überprüfen Sie das Verhalten von ORM mit einer Datei mit django
[Django] Wie man Eingabewerte im Voraus mit ModelForm angibt
So manipulieren Sie das DOM im Iframe mit Selen
Eine Geschichte über den Umgang mit dem CORS-Problem
So erstellen Sie einen Datenrahmen und spielen mit Elementen mit Pandas
Umgang mit UnicodeDecodeError beim Ausführen des Downloads von Google-Bildern
So melden Sie sich mit Python bei AtCoder an und senden automatisch
[VLC] Wie man mit dem Problem umgeht, dass es während der Wiedergabe nicht im Vordergrund steht
Überprüfen Sie Python auf Speicherlecks
So brechen Sie RT mit tweepy ab
[Python] Wie man PCA mit Python macht
Umgang mit Sitzungen in SQLAlchemy
Python: So verwenden Sie Async mit