python matplotlib: Plotten in einem anderen Prozess

EDIT: Die ultimative Voraussetzung für ein solches Python-Programm ist: Daten von UART von einer externen Schaltung empfangen (die wahrscheinlich mit einigen Sensoren ausgestattet ist), das Programm verarbeitet diese Daten und zeichnet eine dynamisch aktualisierte Kurve auf dem Computerbildschirm.

So möchte ich dynamisch zeichnen, das folgende Testskript startet einen Unterprozess und akzeptiert dabei Daten vom übergeordneten Prozess über eine Warteschlange und zeichnet die Daten entsprechend.

Aber wenn das Skript ausgeführt wird, wird nur eine leere Figur angezeigt. Ich kann die Konsolendrucke "put:" und "got:" sehen, was bedeutet, dass sowohl der übergeordnete als auch der untergeordnete Prozess ausgeführt werden und kommunizieren, aber im GUI-Figurenfenster passiert nichts .

Außerdem reagiert das GUI-Fenster nicht und wenn ich auf das Fenster klicke, stürzt es ab.

Das System ist Windows 10, 64 Bit. Python-Version ist 2.7 (32bit)

Was ist das problem hier Danke

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

def worker(q):
    plt.ion()
    ln, = plt.plot([], [])
    plt.show()

    while True:
        obj = q.get()
        n = obj + 0
        print "sub : got:", n

        ln.set_xdata(numpy.append(ln.get_xdata(), n))
        ln.set_ydata(numpy.append(ln.get_ydata(), n))
        plt.draw()

if __name__ == '__main__':
    queue = mp.Queue()
    p = mp.Process(target=worker, args=(queue,))
    p.start()

    while True:
        n = random.random() * 5
        print "main: put:", n
        queue.put(n)
        time.sleep(1.0)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage