当运行两个在Raspberry Pi上使用python gpio管脚的程序时,其中一个会变慢。
一个是磁传感器,另一个是温湿度传感器。后者才是慢下来的。它不是每2秒打印一次温度,而是每5到10秒打印一次。如果它进入磁性传感器,运行速度会更快。
最佳答案
看起来你的问题不是Python,而是IO的缺口。即使使用不同的管脚,覆盆子中的GPIO也使用相同的总线来处理所有管脚,因此一个进程需要等待另一个进程,而不是等待时间。
你可以用come解决方案来解决这个问题,但所有这些都可能是类似于联合程序的东西。
基本思路:将两个程序混合在一起。单一进程/线程来控制所有读操作。
改进的ideia:将代码分成三个过程。其中两个将只读/写一个数组,并使用该值,因为它是从GPIO。其中一个进程将是您的主进程,并将aSharedArray来处理GPIO数据。记住,从RAM读取要比从GPIO读取快得多,所以只需使用数组从IO更新状态。可以使用一个数组设置新值,使用另一个数组存储实际值。
前一段时间,我使用一些Sockets在一些线程上广播一些IO数据,可以获得更新的数据(来自摄像头的图片),并与间隔为100ms的线程共享,这样就避免了IO间隔。因此,您可以使用SocketServerlib和一些workers来传播信息,得到类似的结果。