首页 > 编程语言 >python多线程中:如何关闭线程?

python多线程中:如何关闭线程?

时间:2024-03-13 16:37:30浏览次数:27  
标签:set python self Event 对象 线程 多线程 event

使用 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.
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()

#Python学习交流群:711312441
thread1 = StartDecisionTread(1)
thread1.start()

子线程执行其任务循环,它每次循环都会检查event对象,该对象保持 false,就不会触发线程停止。

当主线程调用event对象的 set() 方法后,在子线程循环体内,调用event对象is_set()方法,发现event 对象为True后, 立即退出任务循环,结束运行。

标签:set,python,self,Event,对象,线程,多线程,event
From: https://www.cnblogs.com/Pythonmiss/p/18070929

相关文章

  • 免费实名认证接口python语言-身份核验-身份证二、三要素
    翔云身份证实名认证接口,实时联网,可快速、精准核验用户所提供信息的真伪,且为更好的服务广大新老用户,现购买翔云身份证实名认证接口即赠送同等的身份证识别接口条数,旨在帮助用户摆脱手动录入的繁琐,提高用户体验,让您的平台远离冒名顶替、欺诈的风险,更有助于您的企业树立起诚信、可靠......
  • python(pip)包/模块:如何离线安装?
    1、生成requirements.txt文件如果有同环境服务器,可直接生成requirements.txt,会把当前服务器下的包和版本写入文件中。pipfreeze>requirements.txt如安装指定包,创建requirements.txt,输入包名==版本号//只输入包名,默认最新版本。例:xlwt==1.3.02、下载包在requirements.t......
  • 开启线程处理数据,提高响应速度
    //此线程类必须实现Runnable接口publicclassXmzNoticeErrorThreadimplementsRunnable{privateICertImportErrorRecServiceiErrorRecService=ContainerFactory.getContainInfo().getComponent(ICertImportErrorRecService.class);privatei......
  • JMeter接口性能压测之线程组(Thread Group)
    一、添加线程组测试计划右键--添加--线程(用户)--线程组  二、线程组设置延迟创建线程直到需要(Delay Thread creation until needed):此选项和Ramp-up时间(秒)设置配合使用,如果选择此项,则所有线程会在需要的时候启动,即会在Ramp-up时间(秒)时间结束后启动所有线程;如果不选择这......
  • 用Python历时十多天完成的全国所有区县经纬度采集
    在高德坐标拾取器(坐标拾取器|高德地图API)中,如果输入北京,坐标获取结果为:116.407387,39.904179,这是经纬度坐标,在高德公开的全国所有区县编码表(https://a.amap.com/lbs/static/code_resource/AMap_adcode_citycode.zip)中,有3241行数据,字段分别为中文名,adcode,citycode,其中citycode......
  • Java中线程的几种创建方式
    本文章将简单介绍有关java的四种线程创建方式一.继承Thread类//继承了Tread的类->MyTreadpublicclassMyThreadextendsThread{//线程启动后将要运行的代码@Overridepublicvoidrun(){System.out.println("通过继承Thread的方式来创建线程")......
  • python实现发送邮件
    python实现自动化邮件发送测试环境:os:windows10编译软件:pycharm,python发送端:[email protected]接收端:[email protected],[email protected] 1.发送端需开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。我这里使用的是QQ,需要去mail.qq.com开启此服务:【登录】-【设置】-【账号】-【OP3/IMA......
  • 如何系统的学习Python——文件操作
    在Python中,文件操作是一项常见的任务,用于读取和写入文件。下面简要介绍Python中的文件处理(FileHandling)操作:打开文件(OpenaFile):要打开一个文件,可以使用内建的open()函数。open()函数接受文件路径和打开模式作为参数。#打开一个文件以供读取file_path="example.......
  • JAVA的多线程及并发
    1.Java中实现多线程有几种方法继承Thread类;实现Runnable接口;实现Callable接口通过FutureTask包装器来创建Thread线程;使用ExecutorService、Callable、Future实现有返回结果的多线程(也就是使用了ExecutorService来管理前面的三种方......
  • springboot/java/php/node/python小区物业管理小程序【计算机毕设】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着城市化进程的加速,住宅小区作为城市生活的基本单元,其管理效率和服务质量直接影响着居民的生活体验。传统的物业管理方式往往依赖于人工操作,不仅耗时......