私は、matplotlib とスレッド化についてかなりの質問があることを知っています。また、pyplot はスレッドセーブではないことも知っています。ただし、この特定の問題については何も見つかりませんでした。私がやりたいことは、図をプロットして毎秒更新することです。このためにスレッドを作成したかったのですが、これまでのところ、スレッドから実際のプロットを取得することさえできませんでした. また、私は qt4 で立ち往生しているため、他のバックエンドの動作が異なる可能性があります。
非常に簡単な例を次に示します。プロットは で作成されplot_a_graph()
ます。これは、メイン プログラムから呼び出された場合は正常に機能しますが、メイン コードの以降の実行を遅らせます。ただし、スレッドから呼び出された場合、グラフは表示されません。
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 ヘルプ