2017-01-23 19 views
-1

如何爲每個項目創建一個進程,並讓父進程等待一切完成? 我有這樣的僞代碼,並要爲創建的每個requestImage(URL)叉子Python os.fork()

page = requestPage(url) 
additionalImages = parseHTML(page) 
for urlImage in additionalImages: 
    image = requestImage(url) 
renderPage() 

我知道如何創建新的進程os.fork(),我只是不知道如何做父進程等待,像os.waitpid(,0)?

編輯:不知道,如果這個工程

children = [] 
page = requestPage(url) 
additionalImages = parseHTML(page) 
for urlImage in additionalImages: 
    pid = os.fork() 
    if pid == 0: 
     children.append(pid) 
     image = requestImage(url) 
    else: 
     pass 
for child in children: 
    os.waitpid(pid, 0) 
renderPage() 
+0

https://docs.python.org/3.6/library/threading.html – 2017-01-23 18:20:42

+0

不知道你在問什麼。你嘗試使用'os.waitpid'嗎?它有用嗎? – 5gon12eder

回答

0

__doc__os.waitpid說:

等待一個給定的子進程的完成。

所以,是的,這就是你想要使用的。

0

您擁有的示例將不會按原樣工作,因爲您沒有將PID傳遞到您正在檢查waitpid的第二個循環中。如果您在那裏使用PID作爲0,那麼您可能沒有問題,因爲這將檢查是否有任何子進程已完成。

你在做什麼?對於waitpid,Linux和Windows有不同的行爲。另外,你可能要考慮使用subprocess.Popen而不是os.fork,我發現它更容易控制,特別是如果你需要與子進程通信的話。

+0

我正在使用linux。 – Exzlanttt

相關問題