Python 在slurm上调度阵列作业时使用argparse?

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 主要部分是我运

我正在尝试使用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
主要部分是我运行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来绕过它。