所以我遇到了这个棘手的情况,我需要执行一些子进程并能够获得每个子进程输出。 这就是我正在使用的atm:
output = Popen(cmd, stdout=PIPE, stderr=STDOUT)
output = output.communicate()[0]
哪种方法效果很好,如果有错误,也会给我带来错误。 现在我需要执行其中的10个并且能够获得每个输出。我想知道是否有一种顺利的方法可以做到这一点而不使用多线程。
答案 0 :(得分:1)
subprocess.Popen
异步启动子进程,只有communicate
使操作同步。
所以你必须先启动所有子进程。然后,根据您希望如何处理其输出,您可以:
communicate
或wait
select
模块。subprocess.poll
以了解哪些已完成。