我有一个程序要创建N个实例,唯一的变化是一些超级参数$ \ beta $。
在我的脑海中,我知道我可以使用bash脚本来执行此操作,在该脚本中,我会调用N次该程序,每个程序的$ \ beta $值都不同,然后将每个程序发送到后台,以便下一个程序可以运行:
#!/bin/bash
nohup python3 test.py 1 >> res.txt &
nohup python3 test.py 2 >> res.txt &
nohup python3 test.py 3 >> res.txt &
nohup python3 test.py 4 >> res.txt &
也许我也可以用更干净的方式直接在python中执行此操作。我的问题是,根据您的经验,最干净的方法是什么?随时问我可能错过的任何细节。
答案 0 :(得分:2)
要并行运行多个事物,我想到的是 GNU Parallel 。
因此,在您的示例中,试运行给出了以下内容:
parallel --dry-run 'nohup python prog.py {} &' ::: {1..4}
示例输出
nohup python prog.py 3 &
nohup python prog.py 2 &
nohup python prog.py 1 &
nohup python prog.py 4 &
通常,您不希望多个并行进程写入同一文件-这很麻烦,因此我将使用以下参数命名输出文件:
parallel --dry-run 'nohup python prog.py {} > res{}.txt &' ::: {1..4}
答案 1 :(得分:1)
您正在寻找subprocess模块。
subprocess.run([process_name, arg1, arg2, argn])
一个例子。
import subprocess
subprocess.run(["ls", "-l"])