如何为每个项目创建一个进程,并让父进程等待所有内容完成? 我有这个伪代码,并希望为每个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()
答案 0 :(得分:0)
__doc__
的{{1}}说:
等待完成给定的子进程。
所以,是的,这就是你想要使用的东西。
答案 1 :(得分:0)
您拥有的示例将无法按原样运行,因为您没有PID进入要检查waitpid的第二个循环。如果你在那里使用0作为PID,你可能没问题,因为这将检查任何子进程是否已完成。
你在做什么? Linux和Windows对waitpid有不同的行为。
另外,你可能想考虑使用subprocess.Popen而不是os.fork,我发现它更容易控制,特别是如果你需要与子进程通信。