multiprocessing 模块创建进程
1.需要将要执行的事情封装为函数
2.使用multiprocessing模块中Process类创建进程对象
3.通过对象属性设置和Process的初始化函数对进程进行设置,绑定要执行的函数
4.启动进程,会自动执行进程绑定的函数
Process(target=函数名)
功能:创建进程对象
参数:name 进程名称,默认是Process-1
target 绑定函数
args 元组 给target函数按照位置传参
kwargs 字典 给target函数按照键值对传参
p.start()
功能:启动进程
target函数会自动执行,此时进程真正被创建
p.join([timeout])
功能:阻塞等待回收子进程
参数:超时时间
p.is_alive()
功能:判断进程生命周期状态,处于生命周期得到True 否则返回False
p.name: 进程名称,默认为Process-1
p.pid: 进程的PID号
p.daemon: 默认为False 主进程退出不会影响子进程执行,如果设置为True 则子进程会随着主进程结束而结束
使用multiprocessing创建子进程,同样子进程复制父进程的全部代码段,父子进程各自执行互不影响,父子进程有各自的运行空间
如果不使用join回收子进程则子进程退出后会成为僵尸进程
使用multiprocessing创建子进程往往父进程只是用来创建进程回收进程
1.如果子进程从父进程拷贝对象,对象和网络或者文件相关联,那么父子进程会使用同一套对象属性,相互有一定的关联性
2.如果在子进程中单独创建对象,则和父进程完全没有关联
创建自定义进程类
1.继承Process
2.编写自己的__init__,同时加载父类的init方法
3.重写run方法,可以通过生成的对象调用start自动运行
多进程优点:
可以使用计算机多核,进行任务的并发执行,提高执行效率
空间独立,数据安全
运行不受其他进程影响,创建方便
多进程缺点:
进程的创建的删除消耗的系统资源较多
发表评论