立即学习:https://edu.csdn.net/course/play/24458/296429?utm_source=blogtoedu
守护进程(了解)
1.概念:守护进程是主进程在创建子进程的时候,将子进程设置成守护自己的进程,等主进程结束后,不管子进程的状态是怎样的,都会立马在主进程结束后结束
2.应用(个人理解):假设主进程是打开了一个浏览器,子进程是所有的浏览器上打开的标签页,只要浏览器关闭了,标签页也会跟着全部关闭!这理解是否正确?在标签页中似乎还可以运行子进程,这与下面3(1)不符
3.强调:
1)守护进程必须在子进程开启前设置,否则会报错
p.daemon()
......
def task(name):
print('子进程结束')
......
if __name__ == '__main__':
p = process(target = task , args = ('子进程1',))
p.daemon = True
p.start()
print("主进程结束")
#运行结果:
主进程结束#运行完主进程后,即运行完代码后,子进程来不及运行就已经随着主进程的结束而结束了,因此没有打印出“子进程结束”的信息
2)作为守护进程的子进程中不能再次启用运行其他的子进程,否则会报错
4.练习题
import time
from multiprocessing import Process
def task1(name):
print('%s is running'%name)
time.sleep(2)
print('%s is done'%name)
def task2(name):
print('%s is running'%name)
time.sleep(2)
print('%s is done'%name)
if __name__ == '__main__':
p1 = Process(target = task1,args = ('守护子进程task1',))
p2 = Process(target=task2,args = ('子进程task2',))
p1.daemon = True
p1.start()
p2.start()
print('主进程结束运行')
'''
E:\python3\venv2\venv\Scripts\python.exe C:/Users/jinlin/Desktop/python_further_study/并发编程/守护进程.py
主进程结束运行
子进程task2 is running
子进程task2 is done
Process finished with exit code 0
'''
总结:由上述的结果可以看出,两个子进程,子进程task1是作为主进程的守护进程,当代码执行完毕即主进程执行完成后子进程守护进程task1还没有来得及运行就随着主进程的结束而结束了,注意,上面的Process是大写