如何使用os.fork()创建指定数量N个Python子进程
用os.fork()创建N个子进程的实现方案
你原来的代码仅调用了一次os.fork(),所以只能生成1个子进程。要生成N个子进程只要在循环中调用fork即可,核心注意点是子进程执行完自身逻辑后必须主动退出,否则子进程会进入下一轮循环生成孙进程,最终产生的进程数量会远超预期。
改造后可生成N个子进程的代码
import os, time import sys x = 1 N = 5 # 此处修改为你需要的子进程数量 # 你原来的func函数 def func(): print(5 * x, "(child)") try: for _ in range(N): pid = os.fork() if pid == 0: # 子进程执行逻辑 func() sys.exit() # 子进程执行完直接退出,不参与后续fork # 父进程逻辑:所有子进程创建完成后执行 time.sleep(5) print(x) except Exception as e: print(f"进程异常: {e}")
执行效果
运行后会先输出N行5 (child)(顺序可能不固定,由系统调度决定),父进程等待5秒后输出1,和你原来的逻辑完全一致。
可选优化
如果不想父进程固定等待5秒,可以用os.wait()回收所有子进程,父进程会在所有子进程执行完毕后立刻执行后续逻辑,替换time.sleep(5)的代码如下:
# 替换time.sleep(5) for _ in range(N): os.wait()
内容的提问来源于stack exchange,提问作者bot 2
相关产品推荐
相关产品推荐

