我正在并行运行python中的一些子进程。我想等到每个子进程都完成。我正在做一个非优雅的解决方案:
runcodes = ["script1.C", "script2.C"]
ps = []
for script in runcodes:
args = ["root", "-l", "-q", script]
p = subprocess.Popen(args)
ps.append(p)
while True:
ps_status = [p.poll() for p in ps]
if all([x is not None for x in ps_status]):
break
是否有一个类可以处理多个子进程?问题是wait
方法阻塞了我的程序。
更新:我想显示计算过程中的进度:类似于“4/7子进程完成…”
如果您有兴趣,请编译c++脚本并执行它。
怎么样
你可以这样做:
进程将并行运行,您将在最后等待所有进程。
如果您的平台不是Windows,那么您可以选择子进程的stdout管道。你的应用程序将被阻止,直到:
在Linux 2.6.xx中使用epoll的非充实示例:
相关问题 更多 >
编程相关推荐