我想通过sbatch_run.sh
脚本多次运行一个Python脚本main.py
,并传入不同的参数,示例如下:
#!/bin/bash
#SBATCH --job-name=sbatch_run
#SBATCH --array=1-1000
#SBATCH --exclude=node047
arg1=10 #arg to be change during runs
arg2=12 #arg to be change during runs
python main.py $arg1 $arg2
参数被编码在由sbatch运行的bash文件中。我担心如果我连续多次运行`sbatch_run.sh`,但每次运行时更改arg1和arg2的值,可能会导致我的运行出错。例如,如果我这样做:
sbatch sbatch_run.sh # with arg1=10 and arg2=12
然后立即修改sbatch_run.sh
,并再次运行该文件,如下所示:
sbatch sbatch_run.sh # with arg1=69 and arg2=666
如果我不修改每个运行的参数,而是让所有运行都使用最后一个(即 arg1=69
和 arg2=666
),那么会出现这种情况。
我知道,如果我在 main.py 中硬编码参数,然后运行相同的 sbatch 脚本,但更改 main.py,它将运行最后一个。我想知道如果我更改 sbatch_run.sh
脚本是否也是如此。
只要你知道,我试过这个实验,运行了1000个脚本,然后一些被排队并放置了一个睡眠命令,然后更改了 sbatch_run.sh
。似乎没有改变我的运行结果,但如果我错了,这太重要了,不能有意外,我想确保我也问了这个问题。
记录一下,我运行了:
#!/bin/bash
#SBATCH --job-name=ECHO
#SBATCH --array=1-1000
#SBATCH --exclude=node047
sleep 15
echo helloworld
echo 5
然后将echo更改为echo 10或echo byebyeworld。
main.py
示例),请确保有某个地方参数不会更改。例如,在由slurm运行的bash脚本中直接传递它们或为每次运行创建一个配置文件,只需确保正确的配置文件正在运行,并且您不会意外更改它! - Charlie Parker