Python os.fork()

Python os.fork(),python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,如何为每个for项创建一个进程,并使父进程等待所有事情完成? 我有这个伪代码,希望为每个requestImage(url)创建一个fork 我知道如何创建一个新进程os.fork(),只是不知道如何让父进程等待,比如os.waitpid(,0) 编辑:不确定这是否有效 children = [] page = requestPage(url) additionalImages = parseHTML(page) for urlImage in additionalImages: pid

如何为每个for项创建一个进程,并使父进程等待所有事情完成? 我有这个伪代码,希望为每个requestImage(url)创建一个fork

我知道如何创建一个新进程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
\uuu文档
说明:

等待给定子进程的完成


所以,是的,这就是您想要使用的。

您的示例将无法正常工作,因为您没有一个PID可以传递到第二个循环中,在该循环中检查waitpid。如果您在那里使用0作为PID,您可能就可以了,因为这将检查任何子进程是否已经完成

你在用什么操作系统?Linux和Windows对waitpid有不同的行为


也可以考虑使用子进程。Popen而不是OS.Fook,我发现它更容易控制,特别是如果你需要与子进程通信。

不确定你在问什么。您是否尝试过使用
os.waitpid
?它有用吗?我用的是linux。
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()