如何在 Python 中分叉多个子进程?

How can I fork many child process in Python?

我想生成子进程并同时下载(我实际上不知道 simultaneous,但看起来它发生了 simultaneous)每个进程中 wget

for download_cmd in cmd_list:
    pid = os.fork()
    if pid == 0:
        fd = subprocess.Popen(download_cmd)
    else:
        cur_num_of_process += 1

if pid != 0:
    while cur_num_of_process > 0 :
        os.wait()
        cur_num_of_process -= 1 

但它不起作用。有什么帮助吗?

Python 版本为 3.x

您正在等待每个 child,因此您永远不会创建多个。


经典叉炸弹,在 python 中。仅作为实验尝试此操作,仅在您自己的设备上(例如,不是在计算机实验室的系统上),并准备好处理后果。这演示了分叉许多(很多,很多)child 个进程。

while True:
    os.fork()

您想要的是创建一个进程集合,然后在每个进程启动后等待它们。

workers = []
for cmd in [...]:
    proc = subprocess.Popen(cmd, ...)
    workers.append(proc)

for proc in workers:
    proc.wait()