python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取
使用 threading.Event 对象关闭子线程
Event 是线程间通信的一种方式。其作用相当于1个全局flag,主线程通过控制 event 对象状态,来协调子线程步调。
主线程创建 event 对象,并将其做为参数传给子线程
主线程可以用set()方法将event 对象置为true, 用clear()方法将其置为false。
子线程循环体内,检查 event 对象的值,如果为 True, 则退出循环。
子线程,可使用 event.wait() 将阻塞当前子进程,直至event 对象被置为true.
set() 设置 True
clear() 设置 False,
wait() 使进程等待,直到flag被改为true.
is_set() 查询 event 对象,如被设置为真,则返回True, 否则返回False.
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class StartDecisionTread(threading.Thread):
def __init__(self, ins):
super(StartDecisionTread, self).__init__()
self.ins = ins
self.stop_event = threading.Event()
def run(self):
while not self.stop_event.is_set():
print(1)
model_file_path = rf'1.db'
if not os.path.exists(model_file_path):
self.stop_event.set()
thread1 = StartDecisionTread(1)
thread1.start()
子线程执行其任务循环,它每次循环都会检查event对象,该对象保持 false,就不会触发线程停止。
当主线程调用event对象的 set() 方法后,在子线程循环体内,调用event对象is_set()方法,发现event 对象为True后, 立即退出任务循环,结束运行。
最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。