背景
使用场景为从串口读取传感器数据,并实时绘图,如下图所示:采样率为600Hz,采用子进程的方式分别进行读取数据和绘图,进程之间使用python自带的队列queue.Queue进行数据交换,每读取到一个数据就加入到队列中。
高速采样并绘图-改进前
结果发现绘图进程的执行效率跟不上串口读取的进程,count和iVS分别表示读串口进程和绘图进程处理的数据个数,两者差别越来越大。
解决方案
在绘图进程中加入以下代码,通过批次读取队列数据(此处为100个),提升了效率,避免队列积压数据。
size = 100
if q.qsize() > size:
for _ in range(size):
改进后的结果如下图所示:
高速采样并绘图-改进后
可以看到,绘图的刷新速度大大提升,处理速度iVS和产生数据的速度count基本相等。