• python中的守护线程


    什么是守护线程:在后台运行,为其他线程提供服务的线程成为守护线程。

    为什么要引入守护线程:

    thread模块不支持守护线程的概念,当主线程退出时,所有的子线程都将终止,不管它们是否仍在工作,

    如果你不希望发生这种行为,就要引入守护线程的概念。

    守护线程的调用格式:thread.setDaemon(True)

    如何使用守护线程:

    1.当只有一个子线程并且为守护线程,那么这个守护线程就会等待主线程运行完毕后挂掉

    2.当有多个子线程时,守护线程就会等待所有的子线程运行完毕后,守护线程才会挂掉

    什么时候设置守护线程:

    如果主线程准备退出时,不需要等待某些子线程执行完成,就可以为这些子线程设置守护线程标记。该标记为真时,表示该线程是不重要的,或者说该线程只是用来等待客户端请求而不做任何其它事情。

    使用守护线程的前提:

    1.要将一个线程设置为守护线程,需要在启动线程之前执行如下赋值语句:thread.daemon=True。

    2.要检查线程的守护状态,也只需要检查这个值即可。一个新的子线程会继承父线程的守护标记。

    3.主线程将在所有非守护线程退出之后才退出,换句话说,就是没有存活的非守护线程时。

    守护线程在threading模块中的工作方式:

    守护线程一般是一个等待客户端请求服务的服务器。如果没有客户端请求,守护线程就是空闲的,如果把一个线程设置为守护线程,就表示这个线程是不重要的,进程退出时就不需要等待这个线程执行完成。

    注意:

    1、守护线程会在该进程内所有非守护线程全部都运行完毕后,守护线程才会挂掉。

    2、守护线程守护的是:当前进程内所有的子线程!

    3、主线程在其他非守护线程运行完毕后才算运行完毕,守护线程在此时被回收。

  • 相关阅读:
    centos yum 安装nginx 后增加模块
    mysql 设置不了短串密码怎么办 You must reset your password using ALTER USER statement before executing this statement.
    Centos7 安装mysql后登录提示:Access denied for user 'root'@'localhost'
    mysql安装历程
    yum.rpm,repo源
    MySql-Server和MySql-Client的关系
    阿里云JKD镜像
    关于字符编码
    Dockerfile编写制作centos7.7+php5.6+nginx镜像
    PHP中常见日期、月份、时间戳列表(strtotime、date、mktime的用法)
  • 原文地址:https://www.cnblogs.com/mengxinfeng/p/12545530.html
Copyright © 2020-2023  润新知