【问题标题】:How to run other lines while another long running python script is running?如何在另一个长时间运行的 python 脚本运行时运行其他行?
【发布时间】:2019-09-13 02:56:34
【问题描述】:

我正在编写一个脚本,该脚本在 cmd 上运行另一个运行时间很长的脚本。但是,我还想在子进程运行时运行其他行。

这是我的代码:

from subprocess import Popen

p = Popen("python script.py")

print("Other stuff")

问题是没有脚本。py 完成后我无法获得打印的文本。 我该如何解决这个问题?

【问题讨论】:

  • 您是否尝试过在开始该过程之前打印其他内容?
  • print other stuff 是他们想要在其他较长进程运行时执行的其他计算的占位符
  • SyntaxVoid 是对的,我会在子脚本运行时做其他事情。
  • 如果您搜索“Python 多处理”这个短语,您会找到比我们在此处的答案中更好地解释它的资源。

标签: python python-3.x subprocess


【解决方案1】:

您很可能正在寻找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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多