🧠 Python 标准库 - multiprocessing
(多进程)
multiprocessing
模块用于创建和管理多个进程,从而实现并行处理,充分利用多核CPU资源,提高程序执行效率。
📌 1. 创建子进程并启动
使用 Process
类创建进程,目标函数通过 目标
参数传入。
导入 多进程
导入 时间
定义 任务(名字):
打印(f"进程 {名字} 开始")
时间.睡眠(2)
打印(f"进程 {名字} 结束")
如果 **名字** == "**主程序**":
进程1 = 多进程.Process(目标=任务, 参数=("甲",))
进程2 = 多进程.Process(目标=任务, 参数=("乙",))
进程1.启动()
进程2.启动()
进程1.等待完成()
进程2.等待完成()
打印("所有进程执行完毕")
📌 2. 进程间通信(队列
)
使用 Queue
进行进程间数据传递。
导入 多进程
定义 发送者(队列):
for i in 范围(5):
队列.放入(i)
打印(f"发送: {i}")
定义 接收者(队列):
while True:
值 = 队列.取出()
如果 值 是 None:
跳出
打印(f"接收: {值}")
如果 **名字** == "**主程序**":
队列 = 多进程.Queue()
进程发送 = 多进程.Process(目标=发送者, 参数=(队列,))
进程接收 = 多进程.Process(目标=接收者, 参数=(队列,))
进程发送.启动()
进程接收.启动()
进程发送.等待完成()
队列.放入(None) # 发送终止信号
进程接收.等待完成()
📌 3. 进程池(Pool
)
Pool
对象用于管理固定数量的进程池,实现任务并行。
导入 多进程
导入 时间
定义 任务(n):
打印(f"任务 {n} 开始")
时间.睡眠(1)
打印(f"任务 {n} 结束")
返回 n * n
如果 **名字** == "**主程序**":
池 = 多进程.Pool(3) # 最大进程数3
结果 = 池.映射(任务, 范围(5))
池.关闭()
池.等待完成()
打印("结果:", 结果)
📌 4. 共享内存
使用 Value
和 Array
在进程间共享数据。
导入 多进程
导入 时间
定义 任务(共享数):
for _ 在 范围(5):
共享数.值 += 1
时间.睡眠(0.1)
如果 **名字** == "**主程序**":
共享数 = 多进程.Value("i", 0) # 整型初始值0