立即学习: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 = Truep.start()print("主进程结束")#运行结果:主进程结束#运行完主进程后,即运行完代码后,子进程来不及运行就已经随着主进程的结束而结束了,因此没有打印出“子进程结束”的信息
2)作为守护进程的子进程中不能再次启用运行其他的子进程,否则会报错
4.练习题
import time
from multiprocessing import Processdef 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 = Truep1.start()p2.start()print('主进程结束运行')'''E:\python3\venv2\venv\Scripts\python.exe C:/Users/jinlin/Desktop/python_further_study/并发编程/守护进程.py
主进程结束运行
子进程task2 is running
子进程task2 is doneProcess finished with exit code 0'''
总结:由上述的结果可以看出,两个子进程,子进程task1是作为主进程的守护进程,当代码执行完毕即主进程执行完成后子进程守护进程task1还没有来得及运行就随着主进程的结束而结束了,注意,上面的Process是大写