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