Python 中断线程

Python 中断线程

在一个多线程的程序中,可能需要停止一个新线程中的任务。这可能是出于许多原因,比如:(a) 不再需要任务的结果,或者(b) 任务的结果出了差错,或者(c) 应用程序正在关闭。

可以使用 threading.Event 对象来停止线程。Event 对象管理一个内部标志的状态,该标志可以设置或者不设置。

当一个新的 Event 对象被创建时,它的标志是未设置的(false)。如果它的 set() 方法被一个线程调用,其他线程可以检查它的标志值。如果发现标志为 true,就可以终止它的活动。

示例

在这个示例中,我们有一个 MyThread 类。它的对象开始执行 run() 方法。主线程睡眠一段时间,然后设置一个事件。直到事件被检测到,run() 方法中的循环会继续进行。一旦事件被检测到,循环就会终止。

from time import sleep
from threading import Thread
from threading import Event

class MyThread(Thread):
   def __init__(self, event):
      super(MyThread, self).__init__()
      self.event = event

   def run(self):
      i=0
      while True:
         i+=1
         print ('Child thread running...',i)
         sleep(0.5)
         if self.event.is_set():
            break
         print()
      print('Child Thread Interrupted')

event = Event()
thread1 = MyThread(event)
thread1.start()

sleep(3)
print('Main thread stopping child thread')
event.set()
thread1.join()

执行此代码时,将生成以下输出: output

Child thread running... 1
Child thread running... 2
Child thread running... 3
Child thread running... 4
Child thread running... 5
Child thread running... 6
Main thread stopping child thread
Child Thread Interrupted

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程