在 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