如何在python中并行执行多个bash命令

Moh*_*hit 5 python

所以,我有一个代码,它接受输入并在集群中启动一个 spark 作业..所以,像

spark-submit driver.py -i input_path
Run Code Online (Sandbox Code Playgroud)

现在,我有路径列表,我想模拟执行所有这些..

这是我尝试过的

base_command = 'spark-submit driver.py -i %s'
for path in paths:
   command = base_command%path
    subprocess.Popen(command, shell=True)
Run Code Online (Sandbox Code Playgroud)

我的希望是,所有的 shell 命令将同时执行,但相反,我注意到它一次执行一个命令..

我如何同时执行所有 bash 命令。谢谢

Mar*_*Omo 7

这就是池的用武之地,它专为这种情况而设计。它自动将许多输入映射到许多线程。是一个关于如何使用它的好资源。

from multiprocessing import Pool

def run_command(path):
    command = "spark-submit driver.py -i {}".format(path)
    subprocess.Popen(command, shell=True)

pool = Pool()
pool.map(run_command, paths)
Run Code Online (Sandbox Code Playgroud)

它将为路径中的每个项目创建一个线程,并为给定的输入同时运行它们

  • 那不相关。Popen 方法不是阻塞的,所以你不需要池...... (2认同)