multiprocessing使用流程
- 需要将要执行的事情封装为函数
- 使用multiprocessing模块中Process类创建进程对象
- 通过对象属性设置和Process的初始化函数对进程进行设置,绑定要执行的函数
- 启动进程,会自动执行进程绑定的函数
- 完成进程的回收
Process()
功能:创建进程对象
参数:
name 进程名称 Process-1
target 绑定函数
args 元组 给target函数按照位置传参
kwargs 字典 给target函数按照键值对传参
p.start()
功能:启动进程
* target函数会自动执行,此时进程真正被创建
p.join([timeout])
功能:阻塞等待回收子进程
参数:超时时间,一定时间过后不再阻塞,如果子进程在超时间过后才结束,该子进程会成为僵尸进程
import multiprocessing as mp
from time import sleep
a = 1
def fun():
sleep(3)
print('a=',a) #1
a = 1000
print('子进程事件')
#创建进程对象
p = mp.Process(target = fun)
#启动进程
p.start() #会执行fun,且只执行fun
sleep(2)
print('这是父进程')
#回收进程
p.join()
print('parent a=',a) #1
- 使用multiprocessing创建子进程,同样子进程复制父进程的全部代码段,父进程各自执行互不影响,父子进程有各自的运行空间
- 如果不使用join回收子进程则子进程退出后会成为僵尸进程
- 使用multprocessing创建子进程往往父进程只是用来创建进程回收进程