matplotlib无法在第一次绘制线程时绘制

时间:2018-05-24 01:13:14

标签: python multithreading matplotlib

我有以下代码在线程中使用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图挂了。线程实际上第二次运行时,如果我在循环中将打印输出到线程函数中,则数据会发生变化。

我想知道为什么会这样,有没有办法解决这个问题? first time thread second time thread

0 个答案:

没有答案