[PYTHON] Führen Sie den interaktiven Modus matplotlib asynchron aus

Der interaktive Modus von matplotlib ist langsam. Wenn Sie die Berechnungsergebnisse regelmäßig visualisieren möchten, möchten Sie vermeiden, die Hauptberechnung beim Zeichnen zu blockieren.

test.py


import numpy as np
import matplotlib.pyplot as plt
import time
import multiprocessing as mp

class Worker(object):
    def __init__(self, queue):
        self.queue = queue

    def loop(self):
        while True:
            obj = np.random.random((100, 100))
            self.queue.put(obj)
            time.sleep(1)

    def __call__(self):
        self.loop()

queue = mp.Queue()
worker = Worker(queue)
p = mp.Process(target=worker)
p.daemon = True

# initialize plot
plt.ion()
imshow = plt.imshow(np.random.random((100, 100)))
plt.show()

p.start()

while True:
    obj = queue.get()
    imshow.set_data(obj)
    plt.draw()
    plt.pause(0.0001)

Lassen Sie Worker die Berechnung ausführen und erhalten Sie das Berechnungsergebnis über Queue und zeichnen Sie es jedes Mal, wenn die Berechnung abgeschlossen ist.

Recommended Posts

Führen Sie den interaktiven Modus matplotlib asynchron aus
Erweitern Sie den interaktiven Modus von Python
Wie man Matplotlib auf Heroku ausführt
Führen Sie Matplotlib auf einem Docker-Container aus
Führen Sie den uwsgi-Server im uwsgi-gevent-Modus aus
Bis matplotlib installiert ist und ausgeführt wird