zoukankan      html  css  js  c++  java
  • Python并发编程:多线程-守护线程

    一 守护线程

    无论是进程还是线程,都遵循:守护XXX会等待主XXX运行完毕后被销毁

    需要强调的是:运行完毕并非终止运行

    1、对主进程来说,运行完毕指的是主进程代码运行完毕
    2、对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕
    

      详细解释:

    1、主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束
    
    2、主线程在其它非守护线程运行完毕后才算运行完毕(守护线程在此时就被回收)。因为主线程的结束异味着进程的结束,进程整体的资源都将被回收,而进程必须保证非守护线程都运行完毕后才能结束。
    

      验证

    from threading import Thread
    import time
    
    
    def sayhi(name):
        time.sleep(2)
        print('%s say hello' % name)
    
    
    if __name__ == '__main__':
        t = Thread(target=sayhi, args=('mike', ))
        t.setDaemon(True)   # 必须在t.start()之前设置
        t.start()
    
        print('主线程')
        print(t.is_alive())
    

      执行结果

    主线程
    True
    

      

    二 练习

    from threading import Thread
    import time
    
    def foo():
        print(123)
        time.sleep(1)
        print('end123')
    
    def bar():
        print(456)
        time.sleep(3)
        print('end456')
    
    
    if __name__ == '__main__':
        t1 = Thread(target=foo)
        t2 = Thread(target=bar)
    
    
        t1.daemon = True
        t1.start()
        t2.start()
        print("main-----")
    

      输出:

    123
    456
    main-----
    end123
    end456
    

      

  • 相关阅读:
    SQL注入详解7
    第3章 ES文档和故障处理
    SQL注入详解6
    第7章 处理串行线路和帧中继连接故障
    SQL注入详解2
    第5章 Cisco测试命令和TCP/IP连接故障处理
    cmd执行sql
    初探Android程序框架PhoneGap
    AlertDialog中的样式设置
    json对象的多个json对象的循环读取
  • 原文地址:https://www.cnblogs.com/mike-liu/p/9287403.html
Copyright © 2011-2022 走看看