将 print 语句添加到线程中的循环中,使其更快 运行

Adding a print statement to a loop working in a thread making it run faster

我有这个线程。当我在 while 循环中添加 print 语句时,它运行得更快。否则很慢。

class PubSub(QRunnable):
   def __init__(self):
       QRunnable.__init__(self)
   def run(self):
       while True:
           message["substep"] = "xyz"
           message["timestamp"] = str(datetime.now().replace(microsecond=0))
           if message["substep"] == "skip":
               continue
           messageJson = json.dumps(message)
           myAWSIoTMQTTClient.publish(topic, messageJson, 1)
           time.sleep(1)

mqtt_worker = PubSub()
mqtt_pool = QThreadPool().globalInstance()
mqtt_pool.start(mqtt_worker)

为什么会这样,如何解决?

编辑: 如果我用 pass 替换 continue,它会使其他线程 运行 变胖。我不知道为什么会这样,我也不想 pass

我通过更改 time.sleep 的顺序解决了这个问题。问题是,由于 message["substep"]= "skip" 大多数时间,因此 time.sleep 不会执行,线程也没有机会 sleep。因此它会保持 运行ning 非常快,而不会让其他线程喘口气。

class PubSub(QRunnable):
   def __init__(self):
       QRunnable.__init__(self)
   def run(self):
       while True:
           message["substep"] = "xyz"
           message["timestamp"] = str(datetime.now().replace(microsecond=0))
           time.sleep(1)
           if message["substep"] == "skip":
               continue
           messageJson = json.dumps(message)
           myAWSIoTMQTTClient.publish(self.topic, messageJson, 1)

print 语句之前会帮助其他线程运行 更快的原因是因为 I/O 操作很慢,因此会暂时阻塞当前线程并允许其他线程线程继续他们的工作。