Python os.fork()
如何为每个for项创建一个进程,并使父进程等待所有事情完成? 我有这个伪代码,希望为每个requestImage(url)创建一个fork 我知道如何创建一个新进程os.fork(),只是不知道如何让父进程等待,比如os.waitpid(,0) 编辑:不确定这是否有效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
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()