You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:用Python自动化生成/修改SLURM脚本实现HPC批量任务提交

用Python批量生成带自定义变量的SLURM脚本

嘿,这个需求完全可行,而且实现起来特别简单!作为Python新手也能快速上手,我来给你拆解一下步骤:

第一步:创建SLURM模板文件

先写一个通用的SLURM脚本模板,把需要替换的变量用占位符标记出来(比如{{VAR_VALUE}}),这样Python就能精准替换。举个例子,保存为slurm_template.sh:

#!/bin/bash
#SBATCH --job-name=matlab_task_{{VAR_VALUE}}
#SBATCH --partition=your_partition
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --output=task_{{VAR_VALUE}}_output.txt
#SBATCH --error=task_{{VAR_VALUE}}_error.txt

# 运行你的Matlab函数,传入变量
matlab -nodisplay -r "your_matlab_function({{VAR_VALUE}}); exit;"

注意:把上面的your_partition和your_matlab_function换成你实际用的分区和函数名哦!

第二步:写Python脚本批量生成SLURM文件

这个脚本的逻辑很简单:读取模板→循环替换变量→生成每个任务的脚本。代码如下,保存为generate_slurm_jobs.py:

# 读取SLURM模板内容
with open('slurm_template.sh', 'r') as template_file:
    template_content = template_file.read()

# 定义你需要的10个变量值,这里用1到10举例,你可以换成任意数值/字符串
variable_list = range(1, 11)

for var in variable_list:
    # 替换模板里的占位符
    job_content = template_content.replace('{{VAR_VALUE}}', str(var))
    # 生成每个任务的脚本文件名
    job_filename = f"slurm_job_{var}.sh"
    # 写入文件
    with open(job_filename, 'w') as job_file:
        job_file.write(job_content)
    print(f"✅ 已生成脚本: {job_filename}")

进阶:生成后直接批量提交任务

如果想省事儿,生成脚本后直接用Python调用sbatch提交,只需要在上面的脚本里加几行:

import subprocess

# 循环生成并提交
for var in variable_list:
    job_filename = f"slurm_job_{var}.sh"
    # 替换并写入脚本(和上面一样的代码)
    job_content = template_content.replace('{{VAR_VALUE}}', str(var))
    with open(job_filename, 'w') as job_file:
        job_file.write(job_content)
    # 提交任务
    try:
        subprocess.run(['sbatch', job_filename], check=True)
        print(f"✅ 已提交任务: {job_filename}")
    except subprocess.CalledProcessError:
        print(f"❌ 提交任务失败: {job_filename}")

怎么运行?

  1. 把模板文件和Python脚本放在同一个文件夹里
  2. 在终端里运行:python generate_slurm_jobs.py
  3. 等着脚本生成/提交10个任务就好啦!

这个方法特别灵活,以后要改变量或者SLURM参数,只需要修改模板或者variable_list就行,再也不用手动改10个文件啦~

内容的提问来源于stack exchange,提问作者Dan Goldwater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:07:24