我整晚都在想这个。。。在
makeflags = ['--prefix=/usr','--libdir=/usr/lib']
rootdir='/tmp/project'
ps = set()
def configModule(m):
print m
return Popen(["./autogen.sh"] + makeflags, cwd=rootdir+"/"+m)
for module in ['mod1','mod2','mod3' ... 'mod10']:
ps.add(configModule(module))
os.wait()
我希望它能启动10个进程并执行/自动发电机平行的。然而,我观察到的是,最初的几个configModule似乎在函数被调用后立即退出。我只看到“print m”语句,但看不到的实际输出/汽车发电机在“mod1”内。然而,大约在mod4之后,代码开始并行运行。我可以看到CPU利用率很高,而且输出是在不同的模块文件夹中生成的。在
你知道为什么前几个模块没有产生吗/汽车发电机结果呢?在
如果我以串行方式运行此代码(即使用subprocess.call而不是Popen)它工作正常。在
与da虚拟系统调用类似的构建程序按预期工作:
您确定输出确实丢失了,还是只是延迟了?在
顺便说一句:
^{pr2}$更优雅。。。在
你的代码对我有用,应该启动所有进程。你没有给我们太多的工作:什么行为不同?在
您没有重定向粘贴的代码中的输出,因此您可能看到childs的
stderr
流。但有一点是:…将只等待1个进程。您可能希望使用来自}。然后,您可以另外使用返回值来确保它们都成功地消亡:
^{pr2}$Popen
的返回值,并对每个子进程调用wait
或{如果一切正常,希望它们都是0。在
相关问题 更多 >
编程相关推荐