首页 > 解决方案 > 如何在另一个长时间运行的 python 脚本运行时运行其他行?

问题描述

我正在研究一个在 cmd 上运行另一个非常长时间运行的脚本的脚本。但是,我还想在子进程运行时运行其他行。

这是我的代码:

from subprocess import Popen

p = Popen("python script.py")

print("Other stuff")

事情是没有 script.py 完成我无法得到打印的文本。我该如何解决这个问题?

标签: pythonpython-3.xsubprocess

解决方案


您很可能正在寻找多处理模块。您将如何启动流程以及它们将做什么 - 由您自己决定,而该模块将使您能够运行多个流程并收集每个流程执行的结果以及输出(如果有)。

下面是官方模块文档中提到的第一种方式的快速实现,只是为了展示它是如何工作的:

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)

推荐阅读