函数multiprocessing参数介绍:
(1)group:组别,一般默认为None
(2)target=:使用的对象函数名称
(3)args=:调用函数的参数,使用元组形式传入
(4)kwargs=:同args作用一样,但是传入参数的形式是字典
(5)name=:子进程的名称
(6)daemom=:守护进程
获取进程的pid、ppid、当前进程的名称:
import os #导入os库
os.getpid():获得当前进程编号
os.getppid():获得当前进程的父进程编号
multiprocessing.process.current_process().name:获得当前进程的名称
其它方法:
进程名字.start() #开始运行进程
进程名字.join() #使进程可以同步运行,就是等这个进程运行结束才运行下一个进程
主进程要在所有子进程运行完才能结束,如果想要主进程运行完成后也结束其子进程的运行可以使用两种方法
(1)守护进程参数daemon=True
(2)进程名.terminate() #销毁子进程
进程之间的数据传递方式:
因为多进程是独立开辟内存空间进行运行,所以变量之间是不能共享的,如果要进行共享则可以通过读写文件或者数据库进行传递。
综合练习题1:
# 使用多进程完成以下任务:
# 1.开辟两个子进程
# 2.子进程1设置为死循环, 每隔1秒打印一次"进程信息"
# 3.子进程2接收一个整数类型参数, 进程2循环的次数即为传入的整形数字, 每个1秒循环一次
# 4.子进程2结束的时候, 子进程1也跟着结束
import multiprocessing import time def func1(): while True: print('func1') time.sleep(1) def func2(n): for i in range(n): print('func2') time.sleep(1) if __name__ == '__main__': p1 = multiprocessing.Process(target=func1,daemon=True) p2 = multiprocessing.Process(target=func2, args=(5,)) p1.start() p2.start() p2.join() # 等待 p2 完成