python多线程中:如何关闭线程?
2023-12-20 16:35:28
嗨喽~大家好呀,这里是魔王呐 ? ~!
python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取
使用 threading.Event 对象关闭子线程
Event 机制工作原理:
Event 是线程间通信的一种方式。其作用相当于1个全局flag,主线程通过控制 event 对象状态,来协调子线程步调。
使用方式
-
主线程创建 event 对象,并将其做为参数传给子线程
-
主线程可以用set()方法将event 对象置为true, 用clear()方法将其置为false。
-
子线程循环体内,检查 event 对象的值,如果为 True, 则退出循环。
-
子线程,可使用 event.wait() 将阻塞当前子进程,直至event 对象被置为true.
event 类的常用方法
-
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后, 立即退出任务循环,结束运行。
尾语
最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。
文章来源:https://blog.csdn.net/python56123/article/details/135109662
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!