如果我在 运行 方法中有无限循环,如何退出 QThread

How to exit from QThread if I have infinite loop inside run method

有这样的运行方法:

def run(self):
    while True:
        new_value = self.client.read_holding_registers(self.reg_num, 1, unit=self.slave_id).registers[0]
        if new_value != self.value:
            self.value = new_value
            self.data_changed.emit(
                {"id": "{0};{1};{2};{3}".format(self.host, self.port, self.slave_id, self.reg_num),
                 "value": self.value})
            self.usleep(100)

所以我需要从连接中获取即将到来的数据。而且我没有条件打破这个循环(只有当连接断开时)。那么我必须如何终止我的线程?

您是否熟悉 daemon 是什么?如果您希望您的线程始终 运行 并在整个应用程序停止时退出,那么您需要将其设置为守护进程。