实用场景
1你的任务是相互独立的
 2你本来使用的是for循环,你想提高时间想要把全部这些独立的文件,一起提交一起跑
 3你的任务数量很多并且任务同时用一个脚本,只是不同任务的参数不易呀,本质上你一个个提交也可以,但是显的很呆。
需要的文件
- config.txt (参数文件)
1  40 1 1457
2  40 1457 2913
3  40 2913 4369
4  40 4369 5825
5  40 5825 7281
6  40 7281 8737
7  40 8737 10193
8  40 10193 11649
参数文件就是传入你python文件的参数。上面的第一个数字是任务的编号,分别是任务1,2,3。每个任务编号传入3个参数,例如1号任务传入参数是40,1,1457
- test.py (这些任务的共同脚本)
 a = [sys.argv[1],sys.argv[2],sys.argv[3]]
在你的脚本里面加入这行代码就可以从python脚本的外部导入参数了。
- bash.sh (bash脚本)
#!/bin/bash
#SBATCH --job-name=p1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
##指定每个任务占用几个核
#SBATCH --array=1-5
## 设定你的全部的任务数
#SBATCH --output=out/array_%A-%a.out
##可以把out文件都统一放好
#SBATCH --nodelist=c003
##指定服务器的核c003,或者你也可以不指定,这样的话,你就可以同时使用多个核去运行任务config=config.txtscan=$(awk -v ArrayTaskID=$SLURM_ARRAY_TASK_ID '$1==ArrayTaskID {print $2}' $config)
chan1=$(awk -v ArrayTaskID=$SLURM_ARRAY_TASK_ID '$1==ArrayTaskID {print $3}' $config)
chan2=$(awk -v ArrayTaskID=$SLURM_ARRAY_TASK_ID '$1==ArrayTaskID {print $4}' $config)
#分别读取config.txt文件中每一行的第2,3,4的参数srun  each_scan_pocal.py ${scan} ${chan1} ${chan2} 
#运行你的python程序