簡體   English   中英

Python os.fork()

[英]Python os.fork()

如何為每個項目創建一個進程,並使父進程等待一切完成? 我有這個偽代碼,想為每個 requestImage(url) 創建一個 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()

os.waitpid__doc__說:

等待給定的子進程完成。

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

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

你用的是什么操作系統? Linux 和 Windows 對 waitpid 有不同的行為。

此外,您可能需要考慮使用 subprocess.Popen 而不是 os.fork,我發現它更容易控制,特別是如果您需要與子進程通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM