Plotting con matplotlib en hilos.

Sé que hay algunas preguntas sobre matplotlib y threading, además que pyplot no es threadsave. Sin embargo, no pude encontrar nada sobre este problema en particular. Lo que quiero hacer es: trazar una figura y actualizarla cada segundo. Para esto quería crear un hilo, pero hasta ahora ni siquiera podía obtener una trama real del hilo. Además, estoy atascado con qt4, por lo que puede ser que otros backends se comporten de manera diferente.

Aquí hay un ejemplo muy simple: una trama se crea enplot_a_graph(). Esto funciona bien cuando se llama desde el programa principal, pero retrasa la ejecución del código principal. Cuando se llama desde un hilo, sin embargo, no se muestra ningún gráfico.

import matplotlib
matplotlib.use("qt4agg")
import matplotlib.pyplot as plt
import threading
import time

def plot_a_graph():
    f,a = plt.subplots(1)
    line = plt.plot(range(10))
    plt.show()
    print "plotted graph"    
    time.sleep(4)


testthread = threading.Thread(target=plot_a_graph)

plot_a_graph()      # this works fine, displays the graph and waits
print "that took some time"

testthread.start() # Thread starts, window is opened but no graph appears
print "already there"

Gracias por tu ayuda

Respuestas a la pregunta(2)

Su respuesta a la pregunta