如何解决pydispatch信号乱序到达
我遇到了使用pydispatch在程序的不同部分之间进行通信的情况。
一个类具有一个属性设置器,该属性设置器会在属性值更改时发出信号。 我代码的另一部分处理UI中显示该属性值的部分。
一些日志如下所示。您可以看到以不同的值(“ Idle”(空闲),然后是“ Meas Fluid”)测量了“ sensor_status”设置程序。这是事件应该发生的适当顺序。
2020-09-29 11:58:27,841 - [METHOD_THREAD] SensorUnderCal:sensor_status: Thread:[MainThread]
2020-09-29 11:58:27,922 - [M_TRACE] SensorUnderCal:sensor_status: Invoked (Setter): {'value': 'Idle'}
...
2020-09-29 11:58:27,928 - [METHOD_THREAD] SensorUnderCal:sensor_status: Thread:[handle_msg]
2020-09-29 11:58:27,928 - [M_TRACE] SensorUnderCal:sensor_status: Invoked (Setter): {'value': 'Meas Fluid'}
然后接收代码发布一些日志消息,但是顺序相反。
[DEBUG ] [Set Sensor Status] {'value': 'Meas Fluid'},thread: handle_msg
[DEBUG ] [Set Sensor Status] {'value': 'Idle'},thread: handle_msg
日志记录格式不同,因为第一组代码使用自定义记录器,第二组代码使用Kivy随附的记录器。
两组日志均显示执行代码的线程。所有操作均在名为“ handle_msg”的线程中执行,但第一次调用设置“ sensor_status”的线程除外,该调用在名为“ MainThread”的线程中执行。我怀疑这是我的问题的一部分,但是我不确定如何解决该问题或如何强制它们在同一线程中执行以保持顺序。我不确定pydispatch如何处理执行顺序,所以我不知道该如何控制。
有人可以帮我吗?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。