【发布时间】:2021-08-30 11:38:20
【问题描述】:
我正在尝试实现类似于this 的目标。具体来说,我有一个充满数据的队列,我想实时绘制这些数据。 我目前有一个使用 QTimer(并且没有线程)的工作版本,以便每半秒调用一次函数。此函数将项目从队列中取出(当它非空时)并绘制它们。虽然这肯定有效,但我想知道是否有更好的方法可以使用(涉及线程等)。我主要担心的是我害怕我的方法虽然有效,但会使事情变得比他们需要的更迟钝。我尝试了上面给出的方法,但是(如果我没有搞砸的话,我可能就是这样):
- 终止线程有问题(特别是:“QObject::killTimer: 定时器不能从另一个线程停止”)
- 正如最后一条评论所指出的那样,该进程甚至似乎都没有发生在其他线程中(在其他线程中添加睡眠调用会冻结整个 GUI)。
关键是,我想知道是否有比我目前的方法“更好”的方法来做到这一点(例如上面给出的方法,如果我可以让它在我的情况下正常工作,或者有一个检查线程队列不断地,并且只要它非空,就会发出一个值而不是有一个计时器)。
我没有给出一个最小的可重现示例,因为这不一定是特定代码位的特定问题,更多的是关于正确方法的问题。
编辑:基于this,最好一次只处理队列中的一个事件并将计时器的超时设置为 0 毫秒(而不是每半秒循环一次直到队列不为空) ?
【问题讨论】:
标签: python multithreading plot timer pyqt5