学习笔记(18):Python网络编程&并发编程-守护进程

立即学习: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是大写

发布了39 篇原创文章 · 获赞 11 · 访问量 415

猜你喜欢

转载自blog.csdn.net/qq_45769063/article/details/104895763