所以,我有一个代码,它接受输入并在集群中启动一个 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 命令。谢谢
这就是池的用武之地,它专为这种情况而设计。它自动将许多输入映射到许多线程。这是一个关于如何使用它的好资源。
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)
它将为路径中的每个项目创建一个线程,并为给定的输入同时运行它们