Rysowanie za pomocą matplotlib w wątkach
Wiem, że są pewne pytania dotyczące matplotlib i threading, również, że pyplot nie jest wątkiem. Nie mogłem jednak znaleźć nic na ten konkretny problem. Chcę: narysować figurę i aktualizować ją co sekundę. W tym celu chciałem stworzyć wątek, ale do tej pory nie mogłem nawet uzyskać prawdziwego wątku z wątku. Ponadto utknąłem z qt4, więc inne backendy mogą się różnić.
Oto bardzo prosty przykład: fabuła jest tworzona wplot_a_graph()
. Działa to dobrze, gdy jest wywoływane z programu głównego, ale opóźnia dalsze wykonywanie kodu głównego. Jednak po wywołaniu z wątku nie jest wyświetlany żaden wykres.
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"
Thx for you Help