2016-02-19 15 views
-1

我想在每個過程中生成子進程並同時下載(我不知道實際上是simultaneous,但看起來像是發生了simultaneous),並且下載了wget我如何在Python中分支很多子進程?

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

您的分支正在繼續在cmd_list:'循環中運行'for download_cmd。但是,如果你所有的叉子所做的都是產卵過程,那麼首先分叉是沒有意義的,因爲無論如何都是異步運行的。 –

回答

0

您正在等待每一個孩子,所以你永遠不會創建一個以上。


經典叉炸彈,在蟒蛇。試試這只是一個實驗,只能用在你自己的設備上(例如不在計算機實驗室的系統上),並且準備好處理後果。這表明分叉許多(很多很多)子進程。

while True: 
    os.fork() 

你想要的是創建的進程的集合,然後他們等待每個啓動之後。

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

for proc in workers: 
    proc.wait() 
+0

謝謝。我必須學習更多.. – user3595632

相關問題