在具有不同变量的多个内核中运行相似的程序

时间:2019-05-19 01:43:35

标签: python python-3.x bash

我有一个程序要创建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中执行此操作。我的问题是,根据您的经验,最干净的方法是什么?随时问我可能错过的任何细节。

2 个答案:

答案 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"])

还要检查how to call a subprocess and get the output