multiprocess模块
一. Process模块介绍
1. 直接使用Process模块创建进程
(1)主进程和子进程
(2)if __name__ == "__main__"语句
2. Process模块参数介绍
函数传参的两种方式
3. Process模块方法介绍
(1)join方法的使用
(2)for循环开启多个进程
4. Process模块属性介绍
5. 在windows中必须把Process()放到if __name__ == "__main__"语句下
二. Process类的使用
1. 继承的形式创建进程
2. 进程的内存空间是隔离的
3. Process对象的其他方法或属性
terminate, is_alive, 显示进程名和id
4. 子进程中不能有input
5. 僵尸进程和孤儿进程
三. 守护进程
仔细说来,multiprocess不是一个模块而是python中一个操作、管理进程的包。 之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所有子模块。由于提供的子模块非常多,为了方便大家归类记忆,我将这部分大致分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享。重点强调:进程没有任何共享状态,进程修改的数据,改动仅限于该进程内,但是通过一些特殊的方法,可以实现进程之间数据的共享。
一. Process模块介绍
1. 直接使用Process模块创建进程
Process模块是一个创建进程的模块,借助这个模块,就可以完成进程的创建.
Process([group [, target [, name [, args [, kwargs]]]]]),由该类实例化得到的对象,表示一个子进程中的任务(尚未启动) 强调: 1. 需要使用关键字的方式来指定参数 2. args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号
举例说明:
# 当前文件名称为test.py # 引入Process模块 from multiprocessing import Process def func(): print("子进程正在运行") if __name__ == '__main__': """由于系统创建进程机制的原因,windows下必须 写if __name__ == '__main__'语句""" p = Process(target=func,) """这一步骤将函数注册到一个进程中,p是一个进程对象, 此时还没有启动进程,只是创建了一个进程对象. 这里的func是不加括号的,因为加上括号函数就直接运行了""" p.start() """这一步骤告诉操作系统,给我开启一个进程,此时func函数 就被我们新开启的这个进程执行了,而这个进程是我主进程运 行过程中创建出来的,所以这个新创建的进程为主进程的子进程, 主进程又可以称为这个新进程的父进程""" print("主进程执行完毕") """这是主进程的程序,上面开启的子进程的程序是和主进程的 程序同时运行的,我们称为异步"""