Plotten mit Matplotlib in Fäden

Ich weiß, dass es einige Fragen zu Matplotlib und Threading gibt, auch, dass Pyplot nicht threadsicher ist. Zu diesem speziellen Problem konnte ich jedoch nichts finden. Was ich tun möchte, ist: Zeichne eine Figur und aktualisiere sie jede Sekunde. Dafür wollte ich einen Thread erstellen, aber bisher konnte ich nicht einmal eine echte Handlung aus dem Thread erhalten. Außerdem stecke ich mit qt4 fest, so dass es sein kann, dass sich andere Backends anders verhalten.

Hier ist ein sehr einfaches Beispiel: Ein Plot wird in erstelltplot_a_graph(). Dies funktioniert gut, wenn es vom Hauptprogramm aufgerufen wird, verzögert jedoch die weitere Ausführung des Hauptcodes. Beim Aufrufen von einem Thread wird jedoch kein Diagramm angezeigt.

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"

Danke für deine Hilfe

Antworten auf die Frage(2)

Ihre Antwort auf die Frage