Qtimer не излучает сигнал тайм-аута в постоянном темпе - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь смоделировать время реального мира. Для этого я использую Qtimer и перенес это в новый поток.

class timer(QObject):

  def __init__(self):
    super(timer, self).__init__()
    self.timer = QTimer(self)


  def initTimer(self):
    print("init called")
    self.pos = time()
    self.timer.setInterval(30)
    self.timer.setTimerType(Qt.PreciseTimer)
    self.timer.timeout.connect(self.update)
    self.timer.start()

  def update(self):
    self.pos+=30/1000
    print(time()-self.pos)

class Main(QWidget):

  def __init__(self):
    super().__init__()
    self.th = QThread()
    self.timer = timer()

    self.th.started.connect(self.timer.initTimer)
    self.timer.moveToThread(self.th)

    self.th.start()

    m = []
    for x in range(100000000):
        m.append(x)
if __name__ == '__main__':

    app = QApplication(sys.argv)
    window = Main()
    window.show()

    status = app.exec_()

    sys.exit(status)

Ошибка "time () - self.pos Msgstr " увеличивается с большей скоростью при l oop, работающем в основном потоке.

Но когда я убираю для l oop, ошибка не увеличивается. Несмотря на то, что я запускаю таймер в отдельном потоке, почему процессы, выполняющиеся в основном потоке, влияют на процессы, выполняющиеся в другом потоке?

...