# ### 守护进程
默认情况下,主进程要等待所有子进程执行完毕之后,才会关闭程序,释放资源
守护进程进行在主进程代码执行结束之后,就直接关闭;
守护进程守护的是主进程
语法:
进程.daemon = True 设置当前这个进程是守护进程
守护主进程,如果主进程执行代码结束了,守护进程立刻终止
必须要写在start()调用之前,进行设置
from multiprocessing import Process def func(): print("当前子进程start") print("当前子进程end") if __name__ == "__main__": p = Process(target=func) p.daemon = True p.start() print("主进程执行结束")
多进程下的守护进程是怎么执行的?
如果同时创建了多个进程那么他是怎么执行的呢?
如果在多进程中创建了一个守护进程的话那么有很大的概率守护进程会不执行或者执行一半就终止,造成这种原因是为什么呢?
我上面也说过子进程是跟随主进程同时执行的,当主程序下没有任何代码执行时会强制中断守护进程那么多进程下包含的守护进程是怎么样的效果呢
def func1(): count = 1 while True: print("*" * count) time.sleep(0.5) count += 1 def func2(): print("func2 start ...") time.sleep(2) print("func2 end ... ") if __name__ == "__main__": p1 = Process(target=func1) p2 = Process(target=func2) # 将p1设置成守护进程 p1.daemon = True p1.start() p2.start() # 延迟1秒,让守护进程执行2次 time.sleep(1) print("主进程代码执行结束... ")
如上我们可以看出守护进程是处于死循环的状态,但我主进程一旦结束会强制终止掉守护进程,不管守护进程有没有结束都强制终止