我正在研究一个脚本,该脚本在cmd上运行另一个运行时间非常长的脚本。但是,我还想在子进程运行时运行其他行。
这是我的代码:
from subprocess import Popen
p = Popen("python script.py")
print("Other stuff")
这是没有脚本的事情。py完成了,我无法获得打印的文本。 我该怎么解决?
答案 0 :(得分:0)
您最有可能正在寻找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)