小白学python-------------并发编程之僵尸进程,孤儿进程,守护进程

一.僵尸进程,孤儿进程(了解)

在linux中

僵尸进程是一种独特的数据结构

子进程运行完毕后,都会进入僵尸进程状态(此时子进程所打开的文件,占用的内存空间都会释放掉,但会保存子进程的PID号,占用cpu的总共时间等).因为父进程无法知道子进程什么时候结束,所以父进程需要在任意时间点指得到子进程的状态.等所有子进程都结束后成为僵尸进程,然后由父进程统一回收僵尸进程(回收pid等)


有害情况:

父进程进入死循环,子进程变成僵尸进程越来越多,父进程不发起回收僵尸进程的信号,子进程占用的pid不能释放,导致无法打开其他进程,此时的僵尸进程是有害的

不正常情况:

父进程立马结束了,子进程还在运行,此时子进程就变成了孤儿进程,最后会被init进程收养并回收.

二.守护进程

1.什么是守护进程

守护进程其实是一个子进程,它会伴随主进程的代码运行完毕后结束

2.为何用守护进程

当父进程需要将一个任务并发出去执行,需要将该任务放到一个子进程里

守护:当该子进程内的代码在父进程代码运行完毕后就没有存在的意义了,就应该将该子进程设置为守护进程,会在父进程代码结束后结束.

import time
from multiprocessing import Process
def task(name,n):
    print('%s is running'%name)
    time.sleep(n)
    print('%s is done'%name)

if __name__ == '__main__':
    p1 = Process(target=task,args=('守护进程',3))
    p2 = Process(target=task,args=('子进程2',1))
    p3 = Process(target=task,args=('子进程3',2))

    p1.daemon = True
    p1.start()
    p2.start()
    p3.start()
    p2.join()
    p3.join()

    print('主')

猜你喜欢

转载自blog.csdn.net/qq_42721964/article/details/82421156