我有一个python脚本。顺便说一下,这是对某些硬件(汽车)的测试。 我测试的硬件有2个处理器,在工作时会给出很多日志(我可以通过Linux minicom连接的控制台上的输出)。
首先,我需要记录从触发活动到处理器的响应消息的时间。我们将其命名为处理器A和处理器B。消息以不同的顺序出现。因此,为了不等待下一个信号而停止(另一个可能首先来自另一个处理器),又不使第二个信号的时间错误地变长,我使用了线程。线程1在处理器A上等待消息1,线程2在处理器B上等待消息2。不管消息1和2的顺序如何,该方法都可以正常工作。我将线程放入数组,并在“ for”循环中启动它们,然后在“ for”循环中将它们加入。
但是现在我需要这样:在'B'上,我仍然只等待一行消息输出。并且工作正常,该操作的线程读取日志行并计算对该日志的正确时间形式触发器。但是在处理器“ B”上,我必须检查新7个日志的时间。因此,我创建了7个新功能来读取这7条新消息并为其计算时间。将该功能分配给7个新线程。像以前一样将它们放在数组中。然后在for循环中启动它们,并在for循环中加入它们。
结果如何?读取了来自B处理器的唯一一条消息,并且正确记录了时间。但是没有检测到来自A处理器的消息(尽管它们确实是来了)。
这里是一个信息-有一个功能可以从设备逐行读取控制台消息日志。但是它像堆栈一样工作—一旦读取行从缓冲区“弹出”。因此,我的8个线程弹出了他们不感兴趣的消息,并且几乎没有机会通过适当的线程检测到一条消息,然后再将其弹出。
因此,我解决该问题的想法是使8个线程严格按以下顺序工作:1-2-3-4-5-6-7-8-1-2-3 ...在每个下一个日志行上。但是...我不知道该怎么做。请分享一些想法:)