pyqt qthread stop thread

在 PyQt 中,您可以使用 QThread.exit() QThread.terminate() 方法来停止线程。

QThread.exit() 方法会在线程的事件循环中发送一个特殊的事件,然后等待线程退出。这是一种正常的方法来停止线程,但是如果线程被阻塞或者正在执行一个长时间的操作,那么这种方法可能会失效。

QThread.terminate() 方法则直接终止线程,并不会等待线程退出。这种方法通常不建议使用,因为它可能会导致线程资源泄漏或者其他未知的问题。

建议使用 QThread.exit() 方法来停止线程,如果线程长时间无法停止,您可以使用一些机制来中止线程,比如在线程中设置一个标志位,然后在线程的事件循环中检查标志位,如果标志位为真就调用 QThread.exit() 方法。

例如,下面是一个使用标志位来停止线程的例子:

import time
from PyQt5.QtCore import QThread, pyqtSignal
class MyThread(QThread):
    # 定义一个信号,用于给主线程发送数据
    data_ready = pyqtSignal(int)
    def __init__(self):
        super().__init__()
        self._stop_flag = False
    def run(self):
        while not self._stop_flag:
        迷途小书童的Note
        Python