一个 python 脚本需要通过 fork() 生成多个子进程。所有这些子进程都应该同时运行,父进程应该等待它们全部完成。能够为“慢” child 设置一些超时会很好。 收集完所有 child 后,父进程继续处理脚本的其余部分。
解决问题的最佳方法是什么?谢谢。
最佳答案
简单的例子:
import os
chidren = []
for job in jobs:
child = os.fork()
if child:
children.append(child)
else:
pass # really should exec the job
for child in children:
os.waitpid(child, 0)
让慢速的 child 超时需要多做一些工作;您可以使用 wait
而不是 waitpid
,并从子项列表中剔除返回值,而不是依次等待每个子项(如此处所示)。如果您使用 SIGALRM
处理程序设置一个 alarm
,您可以在指定的延迟后终止等待。这都是标准的 UNIX 内容,而不是特定于 Python 的...
关于python - 通过 fork() 运行多个子进程的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/174853/