首页 > 编程语言 > 详细

第四十天线程的进阶

时间:2020-03-18 17:03:38      阅读:37      评论:0      收藏:0      [点我收藏+]

1.进程之间是有守护进程的,那么线程之间是否有守护进程那:

技术分享图片
from  threading import Thread          
import time                            
def func():                            
    while True:                        
        time.sleep(2)                  
        print(执行一次)                  
t=Thread(target=func,)                 
t.start()                              
print(主进程执行结束)                       
                                       
                                       
View Code

结果为

技术分享图片

 

 主线程进行结束以后,子线程无休止的进行下去,

技术分享图片
from  threading import Thread              
import time                                
def func():                                
    while True:                            
        time.sleep(2)                      
        print(执行一次)                      
t=Thread(target=func,)                     
t.daemon=True       #设置守护进程                         
t.start()                                  
time.sleep(4)                              
print(主进程执行结束)         
结果为
C:\pycharm\python.exe D:/python练习程序/第四十天/Thread_project.py
执行一次
主进程执行结束

Process finished with exit code 0
                  
                                           
                                           
View Code

2看下面程序和现象说明原因:

技术分享图片
from  threading import Thread
import time
def func():
    while True:
        time.sleep(2)
        print(执行一次)
def func2():
    time.sleep(10)
    print(进程2执行结束)
t=Thread(target=func,)
t.daemon=True
t.start()
t1=Thread(target=func2)
t1.start()
time.sleep(4)
print(主进程执行结束)

结果为:
C:\pycharm\python.exe D:/python练习程序/第四十天/Thread_project.py
执行一次
执行一次
主进程执行结束
执行一次
执行一次
进程2执行结束
View Code

从结果我们可以看出主线程结束之后,守护进程并没有结束,而是等到子线程2结束时,子线程1(守护线程)才结束

原因:

1.对于主进程来说:运行完毕指的是主进程代码运行完毕

2.对于主线程来说,运行完毕指的是主线程所在的进程内所有的非守护线程统统执行完毕后,主线程才算运行完毕。

1。主进程在其代码执行结束后就已经算执行完成了(守护进程此时会被回收)然后主进程会一直等待非守护进程的子进程都执行结束才回子进程的资源(否则会生成僵尸进程),才会结束。

2.主线程在其他非守护进程运行完毕后才算运行完毕(守护进程在此时才会被回收)。因为主线程的结束才意味着进程的结束,进程整体的资源将被回收,而进程必须保证非守护进程的线程都执行结束才能结束。

第四十天线程的进阶

原文:https://www.cnblogs.com/ab461087603/p/12518418.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!