一般情况下,父进程会等子进程完全结束后再结束,但是守护进程是随着父进程代码结束而结束。而且子进程不是一定要依附父进程执行。那我们如何来证明这个结论呢,下面就用一段代码简单的代码来证明子进程,守护进程与父进程的关系:
#导入Process模块
from multiprocessing import Process
#导入time模块
import time
#创建一个func1方法作为子进程
def func1():
#休眠0.5秒
while True:
time.sleep(0.5)
print("我是func1守护线程,我还活着!!!")
def func2():
print("我是func2,我启动了")
# 休眠五秒
time.sleep(5)
print("我是func2,我结束了")
if __name__ == "__main__":
#创建一个子进程func1
P1 = Process(target=func1)
#设置为守护进程
P1.daemon = True
P1.start()
# 创建一个子进程func1
P2 = Process(target=func2)
P2.start()
i = 0
while i <=3:
time.sleep(1)
print("我是父进程")
i += 1
执行后看打印结果:
很明显的可以看出,func1这个进程是应该一直执行才对,但当父进程代码执行完毕后,func1这个进程也就跟着结束了。但此时父进程并没有结束,一直等func2这个子进程执行完毕之后,父进程才结束运行。由此可见,守护进程是随着父进程代码的结束二结束的