孤儿进程 僵尸进程 以及处理僵尸进程

 

孤儿进程 : 当父进程先于子进程退出,此时子进程就会成             为孤儿进程。

 

* 孤儿进程会被系统指定进程收养,即系统进程会成为孤儿   进程新的父进程。系统进程会自动处理孤儿进程退出状态

 

僵尸进程 : 子进程先于父进程退出,父进程没有处理子进             程的退出状态,此时子进程就会成为僵尸进程

 

* 僵尸进程会滞留部分PCB信息在内存中,大量的僵尸进程会消耗系统的内存资源,所以要尽量避免僵尸进程产生

 

如何避免僵尸进程产生

* 父进程先退出

* 父进程处理子进程退出状态

 

pid,status = os.wait()

功能 : 在父进程中阻塞等待处理子进程的退出

返回值:pid  退出的那个子进程的PID号

        status  子进程的退出状态

 

获取原来退出状态

os.WEXITSTATUS(status)

 

pid,status = os.waitpid(pid,option)

功能 : 在父进程中阻塞等待处理子进程的退出

参数 : pid    -1  表示等待任意子进程退出

               >0  表示等待对应PID号的子进程退出

         option   0   表示阻塞等待

                 WNOHANG  表示非阻塞

返回值:pid  退出的那个子进程的PID号

        status  子进程的退出状态

 

waitpid(-1,0)  ===> wait()

 

创建二级子进程

 

父进程创建子进程等待子进程退出

子进程创建下一级子进程,然后立即退出

二级子进程成为孤儿,处理具体工作

 

 

multiprocessing 模块创建进程

 

1. 需要将要做的事情封装成函数

2. 使用multiprocessing提供的类Process创建进程对象

3. 通过进程对象和Process初始化进程进行进程的设置,绑    定函数

4. 启动进程,会自动执行绑定的函数

5. 完成进程的回收

 

创建进程对象

Process()

功能: 创建进程对象

参数: target : 要绑定的函数

       name : 给进程起的名称 (默认Process-1)

       args: 元组 用来给target函数位置传参

       kwargs : 字典  用来给target函数键值传参

 

p.start()

功能 : 启动进程 自动运行terget绑定函数。此时进程被         创建

 

p.join([timeout])

功能: 阻塞等待子进程退出

参数: 超时时间

 

* 使用multiprocessing创建进程子进程同样复制父进程的全部内存空间,之后有自己独立的空间,执行上互不干扰

* 子进程也是有自己特有的PID等资源

* 如果不使用join回收可能会产生僵尸进程

* 使用multiprocessing创建子进程,一般父进程功能就是创建子进程回收子进程,所有事件交给子进程完成

 

作业 : 1.梳理 聊天室代码

        2.对进程概念和创建过程巩固

         3.加深对http协议的理解

         4. 使用父子进程复制一个文件,分别复制文件的上半部分和下半部分到一个新的文件中。以字节区分

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值