zoukankan      html  css  js  c++  java
  • python-线程是守护线程以及守护线程与守护进程的区别

    1.线程与进程运行完毕的区别:

        1.主进程运行完毕指的是主进程代码运行完毕

        2.主线程运行完毕指的是所在的进程内的所有非守护线程运行完毕后,主线程才算运行完毕

            强调:运行完毕,并非是终止

     2.守护进程:主进程代码运行完毕,守护进程也就结束                  (守护的是主进程)

                        主进程要等非守护进程都运行完毕后再回收子进程的资源(否则会产生僵尸进程)才结束

                        主进程等子进程是因为主进程要给子进程收尸(代用wait方法向操作系统发起回收资源信号(pid号,状态信息))

        守护线程:非守护线程代码运行完毕,守护线程也就结束           (守护的是非守护线程)

                         主线程在其他非守护线程运行完毕后才算结束(守护线程在此时就会被回收)

                        强调:主线程也是非守护线程(进程包含了线程)

            总结:

                    主线程的结束意味着进程结束,进程整体的资源都会被回收,而进程必须保证非守护线程都运行完毕后才能结束

                    守护进程:主进程代码运行完毕,守护进程也就结束

                    守护线程:非守护线程运行完毕,守护线程结束

    from threading import Thread, current_thread
    import time
    
    
    # def task():
    #     print('%s is runing '%current_thread().name)
    #     time.sleep(2)
    #     print('%s is done'%current_thread().name)
    # 
    # if __name__ == '__main__':
    #     t=Thread(target=task,name='守护进程')
    #     t.daemon=True
    #     t.start()
    #     print('主')
    
    
    
    def foo():
        print(123)
        time.sleep(5)
        print('end123')
    
    
    def bar():
        print(456)
        time.sleep(2)
        print('end456')  # 守护线程:非守护线程代码运行结束后就结束
    
    
    t1 = Thread(target=foo)
    t2 = Thread(target=bar)
    
    t1.daemon = True
    t1.start()
    t2.start()
    
    # t1.join()                #让主线程原地等待子线程运行完毕后才运行下面代码
    print('main----')# 守护线程:非守护线程代码运行结束后就结束
    
    
    t1 = Thread(target=foo)
    t2 = Thread(target=bar)
    
    t1.daemon = True
    t1.start()
    t2.start()
    
    # t1.join()                #让主线程原地等待子线程运行完毕后才运行下面代码
    print('main----')
  • 相关阅读:
    Java JMX 监管
    Spring Boot REST(一)核心接口
    JSR 规范目录
    【平衡树】宠物收养所 HNOI 2004
    【树型DP】叶子的颜色 OUROJ 1698
    【匈牙利匹配】无题II HDU2236
    【贪心】Communication System POJ 1018
    【贪心】Moving Tables POJ 1083
    Calling Extraterrestrial Intelligence Again POJ 1411
    【贪心】Allowance POJ 3040
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111927.html
Copyright © 2011-2022 走看看