python matplotlib: plotando em outro processo
EDIT: O requisito final para um programa Python é: receber dados do UART de um circuito externo (que provavelmente está equipado com alguns sensores), o programa processará esses dados e desenhará uma curva atualizada dinamicamente na tela do computador.
Portanto, quero plotar dinamicamente, o script de teste a seguir inicia um subprocesso e, nesse processo, ele aceita dados do processo pai por meio de uma Fila e plota os dados adequadamente.
Mas quando o script é executado, apenas uma figura vazia é mostrada, posso ver o console imprimindo "put:" e "got:", significando que o pai e o subprocesso estão em execução e se comunicando, mas nada acontece na janela de figura da GUI.
Além disso, a janela da GUI não responde e, se eu clicar na janela, ela trava.
O sistema é o Windows 10, 64 bits. A versão Python é 2.7 (32 bits)
Qual é o problema aqui? obrigado!
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)