如果我在 运行 方法中有无限循环,如何退出 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 是什么?如果您希望您的线程始终 运行 并在整个应用程序停止时退出,那么您需要将其设置为守护进程。
有这样的运行方法:
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 是什么?如果您希望您的线程始终 运行 并在整个应用程序停止时退出,那么您需要将其设置为守护进程。