跳到主要内容

🧠 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. 共享内存

使用 ValueArray 在进程间共享数据。

导入 多进程
导入 时间

定义 任务(共享数):
for _范围(5):
共享数.+= 1
时间.睡眠(0.1)

如果 **名字** == "**主程序**":
共享数 = 多进程.Value("i", 0) # 整型初始值0