我正在编写一个脚本,它在cmd上运行另一个非常长的运行脚本。但是,我还希望在子进程运行时运行其他行。
这是我的代码:
from subprocess import Popen
p = Popen("python script.py")
print("Other stuff")
事情是没有script.py完成我无法得到打印文本。我怎么解决这个问题?
很可能你正在寻找multiprocessing模块。您将如何启动流程以及它们将如何操作 - 在您的方面,而模块将使您能够运行多个流程并收集每个流程执行的结果以及输出(如果有的话)。
下面是官方模块文档中提到的第一种方法的快速实现,以显示其工作原理:
from multiprocessing import Pool
from subprocess import check_call
commands = [
'echo {time}; sleep {time}; echo {time}'.format(time=5),
'echo {time}; sleep {time}; echo {time}'.format(time=10),
'echo {time}; sleep {time}; echo {time}'.format(time=4),
]
def sample(command):
check_call(command, shell=True)
if __name__ == '__main__':
with Pool(len(commands)) as p:
p.map(sample, commands)