【问题标题】:How can I fork many child process in Python?如何在 Python 中分叉多个子进程?
【发布时间】:2016-02-19 13:34:58
【问题描述】:

我想生成子进程并同时下载(我实际上不知道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

【问题讨论】:

  • 您的分叉将继续运行for download_cmd in cmd_list: 循环。但是,如果你的所有分叉都只是生成进程,那么一开始就分叉是没有意义的,因为这些进程无论如何都是异步运行的。

标签: python-3.x subprocess fork


【解决方案1】:

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


经典的叉子炸弹,在 python 中。仅将其作为实验尝试,仅在您自己的设备上(例如,不在计算机实验室的系统上)尝试,并准备好应对后果。这演示了分叉许多(许多、许多)子进程。

while True:
    os.fork()

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

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

for proc in workers:
    proc.wait()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 2023-04-04
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2018-03-26
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多