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

时间:2016-02-19 13:34:59

标签: python-3.x subprocess fork

我想生成子流程并同时下载(我实际上并不知道simultaneous,但在每个流程中看起来都是simultaneouswget

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

1 个答案:

答案 0 :(得分:0)

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

经典的叉形炸弹,在python中。只能作为实验尝试,只能在您自己的设备上(例如,不在计算机实验室的系统上),并准备好应对后果。这表明分支了很多(很多很多)子进程。

while True:
    os.fork()

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

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

for proc in workers:
    proc.wait()