Многопоточный matplotlib замедляется. Построение графиков с низкой задержкой с помощью matplotlib в tkinter - PullRequest
0 голосов
/ 05 апреля 2020

Код выполняется в течение более 0,5 с в первый раз, а затем замедляется (с многопоточностью). Я пытался "блин", но это не помогло. Есть ли способ сделать этот сюжет быстрее? Я хочу, чтобы он работал с 40 FPS. Я использую буфер для подготовки изображений к показу, но при многопоточности одна операция занимает 1-2 с (canvas.draw() замедляется в 10 раз и построение графиков 5 раз). Почему многопоточность тормозит этот код?

  def render_fig(self):
    """
    Convert a Matplotlib figure to a 4D numpy array with RGBA channels
    """

    self.plot(self.exchange.data)
    #FigureCanvasAgg
    self.canvas.draw()
    #Get the RGBA buffer from the figure
    w, h = self.fig.canvas.get_width_height()
    buf = np.array(self.canvas.renderer.buffer_rgba(), dtype=np.uint8)
    buf.shape = (w, h, 4)
    w, h, d = buf.shape
    img = Image.frombytes("RGBA", (w, h), buf.tostring())
    self.exchange.render = ImageTk.PhotoImage(img)
    self.exchange.ready = True

def plot(self, plotdata):
    """"""

    if self.intermediary.logx:
        if self.prev_log and self.im is not None:
            self.im.set_ydata(plotdata)
        else:
            self.im = self.ax.semilogx(self.intermediary.transform.freqs, plotdata)
            self.canvas.draw()
    else:
        self.im = self.ax.plot(self.intermediary.transform.freqs, plotdata)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...