Master进程负责任务生成、派发与结果聚合,不参与计算;worker循环监听队列指令;Manager提供共享队列、字典和事件;支持嵌入type字段的动态协议;具备异常隔离与优雅关闭能力。

通过 master_process 控制多进程模型架构,核心是让一个主控进程(master)负责任务分发、状态协调和结果收集,而其他工作进程(worker)只专注执行。这不是简单的并行启动多个 Process,而是构建一种有组织、可干预、可扩展的运行结构。关键在于通信机制的设计与控制权的集中。
明确 master 进程的角色边界
master 不参与实际计算,只做三件事:生成任务、派发任务、接收并聚合结果。它不直接操作共享数据,而是通过队列、代理或网络接口间接驱动 worker 行为。
- 任务生成逻辑(如读取输入、构造参数、切分数据)必须在 master 中完成
- 所有 worker 的启动、暂停、终止指令应由 master 发出(例如通过 Event 或 Queue 发送控制信号)
- worker 进程需设计成循环监听模式,持续从 master 提供的队列中获取任务或指令
使用 Manager 管理共享资源与通信通道
manager 是实现 master-worker 协同的基础支撑。它提供跨进程可访问的共享对象,避免手动序列化/反序列化。
- 用
manager.Queue()创建任务队列(master.put → worker.get)和结果队列(worker.put → master.get) - 用
manager.dict()或manager.Namespace()维护全局状态(如运行标志、错误计数、进度百分比) - 用
manager.Event()实现同步控制,比如 master 设置stop_event.set()后,所有 worker 检测到即退出循环
支持动态行为调整的通信协议
单纯传数据不够,master 要能实时改变 worker 的行为模式。可在任务单元中嵌入指令字段:
- 任务消息格式可定义为字典:
{'type': 'compute', 'data': 123}或{'type': 'pause', 'reason': 'load_high'} - worker 主循环先解析 type,再决定执行计算、休眠、重连或上报健康状态
- master 可根据实时反馈(如 worker 定期发送的心跳)自动扩容/缩容 worker 数量
异常隔离与 graceful shutdown
master 必须具备容错能力,不能因单个 worker 崩溃而中断整体流程。
- worker 内部捕获所有异常,将错误信息写入结果队列或专用 error_queue,而非抛出
- master 使用
queue.get(timeout=...)配合超时检测,识别失联 worker 并标记剔除 - 关闭阶段,master 先发 stop 指令,等待所有 worker 主动退出;若超时,则调用
p.terminate()
这种架构不依赖外部框架,纯 Python 标准库即可落地,重点在于 master 的“调度意识”——它不是发起者,更是协调者和观察者。

















