我想生成子流程并同时下载(我实际上并不知道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
答案 0 :(得分:0)
您正在等待每个孩子,因此您永远不会创建多个孩子。
经典的叉形炸弹,在python中。只能作为实验尝试,只能在您自己的设备上(例如,不在计算机实验室的系统上),并准备好应对后果。这表明分支了很多(很多很多)子进程。
while True:
os.fork()
你想要的是创建一个进程集合,然后在每个进程启动后等待它们。
workers = []
for cmd in [...]:
proc = subprocess.Popen(cmd, ...)
workers.append(proc)
for proc in workers:
proc.wait()