So che ci sono abbastanza alcune domande sul matplotlib e filettatura, inoltre, che non è pyplot threadsave. Non ho trovato nulla su questo particolare problema comunque. Quello che voglio fare è: tracciare una figura e aggiornarla ogni secondo. Per questo ho voluto creare un filo, ma finora non ho potuto anche ottenere una trama vera e propria dal thread. Inoltre, mi sono bloccato con Qt4, quindi potrebbe essere altri backend si comportano differenti.Plotting con matplotlib in fili
Ecco un esempio molto semplice: Una trama è creato in plot_a_graph()
. Funziona correttamente quando chiamato dal programma principale ma ritarda l'ulteriore esecuzione del codice principale. Tuttavia, quando viene chiamato da una discussione, non viene visualizzato alcun grafico.
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 per voi aiuto
Fare tutto il vostro tracciato sul thread principale. Almeno con QT, l'interfaccia grafica non piace se si tenta di fare questo. – tacaswell