使用来自另一个 python 脚本的不同输入并行提交多个 python 作业

问题描述 投票:0回答:1

我有一个 python 脚本,我需要在其中提供标记的参数,例如:

python test.py -i input_file -p parameter_1 -o output_file

我正在使用 python (pipeline.py) 创建一个管道,我想在其中使用不同的输入并行运行 test.py。

如果我如下运行 for 循环,它会按顺序运行,但我想提交至少 5 个输入的并行作业,因为我有更多的内核。

for inputs in input_file_list:
    subprocess.run(['python', 'test.py', "-i "+inputs, "-p 10", "-o "+inputs+"_output.csv"])

我该怎么做?

提前致谢!

python python-3.x parallel-processing subprocess arguments
1个回答
0
投票

只需使用 asyncio

import asyncio
import os


def run_command(command: str = "") -> None:
    os.system(command)


async def run_command_async(command: str = "") -> None:
    await asyncio.to_thread(run_command, command)


async def main() -> None:
    input_file_list = []
    await asyncio.gather(
        *[run_command_async(f"python test.py -i {inputs} -p 10 -o {inputs}_output.csv") for inputs in input_file_list]
    )


if __name__ == "__main__":
    asyncio.run(main())
© www.soinside.com 2019 - 2024. All rights reserved.