我正在进行覆盆子pis和传感器的物联网实验,旨在监测温度变化。每个树莓派都连接到多个传感器。我的目标是每秒每个传感器读取一次,将数据存储在缓冲区(真实缓冲区或csv文件)中,并将数据发布到代理。该程序现在正在排队等待所有事情。结果有些延迟。我已经测试过,结果是延迟来自阅读过程。有没有办法减少阅读延迟?多线程会解决这个问题吗?如果是这样,我认为创建3个线程。传感器线程读取数据并存储在缓冲区中。 Communicator线程连接到代理,读取缓冲区中的数据并将其发送给代理。主线程将管理传感器线程和通信器线程。如果我以这种方式重构程序,我是为每个传感器写一个传感器线程还是为所有传感器写一个传感器线程?
任何建议都将不胜感激。
答案 0 :(得分:0)
在重新设计应用程序之前,您应该缩小瓶颈所在的范围。为了诊断这一点,我会尝试将传感器中每次读取的开始和结束记录到保存在内存中的字符串缓冲区中。这样做30秒左右。然后,停止从传感器读取并将缓冲区写入日志文件。如果日志文件显示每个传感器读取的开始和结束之间的延迟,那么这就是瓶颈所在的位置。如果没有,则瓶颈可能是不断将CSV文件写入磁盘。