python 线程中断

在 Python 中,要中断一个线程,可以使用 threading 模块提供的方法来实现。下面是两种常用的方法:

  • 使用 threading.Event 实现中断线程
  • import threading
    class MyThread(threading.Thread):
        def __init__(self):
            super().__init__()
            self._stop_event = threading.Event()
        def stop(self):
            self._stop_event.set()
        def run(self):
            while not self._stop_event.is_set():
                # 线程代码
    # 在主线程中创建并启动线程
    t = MyThread()
    t.start()
    # 在主线程中中断线程
    t.stop()
    

    在上面的代码中,MyThread 类继承自 threading.Thread,并重写了 run 方法。在 __init__ 方法中,创建了一个 threading.Event 对象 _stop_event,并在 stop 方法中设置 _stop_event,表示要中断线程。在 run 方法中,通过判断 _stop_event 是否被设置来决定是否继续运行线程。

  • 使用 threading.Threadis_alive 方法实现中断线程
  • import threading
    class MyThread(threading.Thread):
        def __init__(self):
            super().__init__()
        def run(self):
            while self.is_alive():
                # 线程代码
    # 在主线程中创建并启动线程
    t = MyThread()
    t.start()
    # 在主线程中中断线程
    t.join()
    

    在上面的代码中,MyThread 类同样继承自 threading.Thread,并重写了 run 方法。在 run 方法中,通过调用 self.is_alive() 方法来判断线程是否还在运行。在主线程中,调用 t.join() 方法来等待线程结束,从而达到中断线程的目的。

    需要注意的是,这种方法只能在线程的执行代码中使用,无法在主线程中随时中断线程。如果需要在主线程中随时中断线程,还需要结合 threading.Event 或者其他的方法来实现。

  •