Matplotlib не удалось построить в потоке, кроме первого раза - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующий код, который строит изменяющуюся кривую, используя matplotlib в потоке, и кажется, что я могу построить ее только один раз, во второй раз, когда я запускаю новый поток для той же функции, matplotlib просто строит пустую фигуру и зависаетup.

код прикреплен

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.во второй раз, когда поток фактически работает, потому что, если я помещу печать в цикл while функции потока, данные изменятся.

Я хотел бы знать, почему это так, и есть ли способ решить эту проблему?вопрос?first time thread second time thread

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...