我发现了一些我不太理解的有趣的行为,想知道是否有人知道发生了什么。在
我正在用PyQt4开发一个程序,我要求RS485接口接收到的数据每秒更新一次
为了准确地实现这一点,我使用高级Python调度器(APS)的BlockingScheduler来每秒调度一个任务。在
我遇到的问题是,当使用BlockingScheduler时,我从主线程发出的任何信号都没有收到,即使我使用QtCore.QCoreApplication.processEvents()
。在
我不太明白这一点,因为如果我在工作线程中有一个阻塞循环,例如:
while(True):
print('This loop never ends')
QtCore.QCoreApplication.processEvents()
来自另一个线程的所有信号都将在print语句生成后被处理。但是看起来BlockingScheduler
并没有表现出与此相同的行为。在
我尝试过使用BackgroundScheduler,但这个实现的问题是BackgroundScheduler似乎与调用它的线程有不同的事件循环。这导致了与硬件的通信冲突,因为有两个执行循环在争夺一个串行总线。在
我的代码看起来像这样
^{pr2}$所以我的问题是:
1)如何使BlockingScheduler看到外部信号
2)如何让信号等待BackgroundScheduler
安排的任务完成?在
3)是否有更好的方法来安排每秒钟的任务,而不让这些都成为问题?在
目前没有回答
相关问题 更多 >
编程相关推荐