Код выполняется в течение более 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)