我有以下代码在线程中使用matplotlib绘制变化曲线,似乎我只能绘制一次,第二次我为同一个函数启动一个新线程,matplotlib只绘制一个空图并挂起起来。
附加代码
import threading
import numpy as np
import matplotlib
# matplotlib.use('')
import matplotlib.pyplot as plt
import time
plt.ion()
running = False # if running false, thread automatically ends
def drawing():
print("start drawing")
data = np.arange(100)
fig, axes = plt.subplots()
line, = axes.plot(data)
while running:
data = np.roll(data, 1)
line.set_ydata(data)
# plt.draw()
fig.canvas.flush_events()
time.sleep(0.1)
print("stop drawing")
def run_drawing():
global running
while 1:
if running:
c = input("press 'q' to quit or enter to STOP drawing: ")
else:
c = input("press 'q' to quit or enter to START drawing: ")
if c == 'q':
if running:
running = False
break
else:
if not running:
t1 = threading.Thread(target=drawing)
running = True
t1.start()
else:
running = False
if __name__ == '__main__':
run_drawing()
并附上两张图片,以显示我的意思是matplotlib图挂了。线程实际上第二次运行时,如果我在循环中将打印输出到线程函数中,则数据会发生变化。