创建进程

方式一:直接继承Process类

from multiprocessing import Process

p = Process(target=fun, name='...',args=(param,), kwargs={...}, daemon=bool)
p.start()
p.join()
print('p子进程执行完才到我了')

daemon 表示守护进程,当为子进程上设置为True时,主进程结束(这里的结束指代码级的结束,

如果为False,会一直等到子进程结束,父进程才结束),会发送SIGTERM(即相当于kill -15);默认为False。

另外,daemon进程不能有子进程!

join:意义是阻塞当前进程,直到子进程结束


方式二:写一个自定义类,还是继承Process

from multiprocessing import Process

def fun():
    pass

class MyProcess(Process):
    def run(self):
        fun()

这里重写run方法可以实现一些自定义的灵活操作,

当子进程启动时,会自动调用run,如果同时定义了target,会忽略target方法


方式三:进程池

from multiprocessing import Pool

def fun():
    pass

pool = Pool(processes=int, initializer=fun,
            initargs=(param,), maxtasksperchild=int)

processes=指定创建进程数,

initializer=初始化进程需要调用的函数,

initargs=初始化函数的参数,

maxtasksperchild=每个进程允许处理的最大任务数,达到就kill掉,再起一个新的子进程