如何实现同时运行N个进程且不复用已结束进程?
实现无进程复用的固定并发数进程管理
要达成以下核心目标:
- 并发运行进程,绝不复用已存在的进程:进程结束后立即创建新进程补充
- 任何时刻同时运行的进程数量不超过N
multiprocessing.Pool无法满足需求,因为它会复用进程池中的进程。而那种“启动N个进程,等待全部结束后再启动下一批”的方案,会因为各进程运行时长差异较大,导致资源利用率低下,效果不理想。
以下是一个可行的基础解决方案:
from multiprocessing import Process, Queue import random import os from time import sleep def f(q): print(f"{os.getpid()} Starting") sleep(random.choice(range(1, 10))) q.put("Done") def create_proc(q): p = Process(target=f, args=(q,)) p.start() if __name__ == "__main__": q = Queue() N = 5 for n in range(N): create_proc(q) while True: q.get() create_proc(q)
内容的提问来源于stack exchange,提问作者chhenning
相关产品推荐
相关产品推荐

