进程池中的工作进程能否立即开始执行任务?

编程语言 2026-07-09

主进程加载了若干千兆字节的输入数据,随后启动(fork)了一批工作进程来处理其中的不同部分。组内最后一个工作进程的启动时间要比第一个晚得多,但在它们全部被启动之前,谁也不会开始工作。

这不仅浪费时间,还会带来不受欢迎的同步问题。有没有办法让每个工作进程在被fork时就立即开始执行,而不必等待进程池完成对所有同级进程的fork?

在Linux上使用Python 3.13...

解决方案

Multiprocessing Pool 会逐个分叉工作进程,但任务分发不会开始,直到池基础设施(即内部队列、处理程序等)完全初始化为止。这种行为并非来自Linux本身,而是来自 Pool 的实现。

一种可能的变通方法是手动启动 Process 工作进程,而不是使用 Pool,从而在调用 start() 之后让每个进程立即开始执行。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章