Python 在slurm上调度阵列作业时使用argparse?
我正在尝试使用slurm运行一系列作业。Python 在slurm上调度阵列作业时使用argparse?,python,argparse,slurm,Python,Argparse,Slurm,我正在尝试使用slurm运行一系列作业。 我使用以下命令: sbatch --array=0-1 my_script.sh 现在,我的_script.sh #!/bin/bash #SBATCH --gres=gpu:1 srun --gres=gpu:1 --chdir=$(pwd) singularity exec --nv --bind /data0 gtc_dev_v9.simg python train.py $1 -v $SLURM_ARRAY_TASK_ID 主要部分是我运
我使用以下命令:
sbatch --array=0-1 my_script.sh
现在,我的_script.sh
#!/bin/bash
#SBATCH --gres=gpu:1
srun --gres=gpu:1 --chdir=$(pwd) singularity exec --nv --bind /data0 gtc_dev_v9.simg python train.py $1 -v $SLURM_ARRAY_TASK_ID
主要部分是我运行python代码的方式。
现在,train.py需要一个通过命令行的参数列表
因此,为了运行多个实验,我在train.py中定义了一个字典列表,其中包含我想要运行的不同实验的所有argparse参数。现在,我想要的是根据SLURM_数组_任务_ID选择一个字典,并忽略argparse
现在的问题是,在运行此代码时,我一直遇到argparse错误
train.py: error: unrecognized arguments: -v 1
有没有办法绕过argparse?因为我想保留该选项,以防需要,但也可以选择字典。
谢谢 如果将
parser.parse_args()
调用放在If uuu name uuu…
块中,则在导入模块时它不会运行。它仅在作为脚本调用时运行并使用sys.argv
。您还可以调用parser.parse_args(argv)
,其中是argv
是您自己的字符串列表。如果argv
为None
它将解析sys.argv[1://code>。耶。这是有道理的。谢谢实际上,我在argparse中定义了一个伪变量v来绕过它。