我有一个 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"])
我该怎么做?
提前致谢!
只需使用 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())