python matplotlib: построение графиков в другом процессе

РЕДАКТИРОВАТЬ: Конечное требование для такой программы на Python: получение данных из UART от внешней схемы (которая, вероятно, оснащена некоторыми датчиками), программа обработает эти данные и нарисует динамически обновляемую кривую на экране компьютера.

Итак, я хочу построить динамически, следующий тестовый скрипт запускает подпроцесс, и в этом процессе он принимает данные из родительского процесса через очередь и соответственно строит данные.

Но когда скрипт запускается, отображается только пустая фигура, я вижу, как консоль выводит сообщения «put:» и «got:», что означает, что родитель и подпроцесс работают и обмениваются данными, но в окне рисунка GUI ничего не происходит.

Кроме того, окно графического интерфейса не реагирует, и если я нажму на окно, оно будет зависать.

Система Windows 10, 64 бит. Версия Python 2.7 (32 бита)

В чем здесь проблема? благодарю вас!

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)

Ответы на вопрос(2)

Ваш ответ на вопрос