我正在尝试使用Matplotlib开发PyQT5应用程序,其结构与How to use a Qthread to update a Matplotlib figure with PyQt?
中接受的答案类似我面临的问题是表现。对应用程序的要求是多个(最多约20个)matplotlib图,它们随机更新,但通常在几毫秒内。每个图表都有200-2000个对象(主要是线条和矩形)。我尽可能地优化了绘图过程,但是根据图表上的对象数量,我每张图表的绘制时间大约为40-300ms。
我希望至少使用qthread
将绘图过程(主要是.draw()
和/或使用figure()
的任何内容)卸载到另一个线程以保持gui响应,但是似乎所有绘图都必须在主线程中完成。因此,任何其他线程解决方案(如多进程或类似方法)也不起作用。
基本上,最糟糕的情况是szenario,如果所有20个图表同时更新,gui将无响应20 * 300ms。据我了解,使用QMdiSubWindow不会导致该子窗口使用额外的线程,因此在更新所有图形之前,完整的gui会冻结。
我看到以下解决此问题的方法:
我了解情况吗?还有其他更好的方法吗?