python - 使用Python向 super 计算机提交多个作业

标签 python bash import glob submission

我目前正在使用 super 计算机进行各种量子力学计算。我需要在任何给定时间提交大量文件(280 个单独提交)。我正在尝试使用 python 来自动化此过程,但在使用 python 运行单独的提交脚本方面缺乏经验。我正在使用的提交脚本(名为 subOrca_mpi.sh)是:

#!/bin/bash
string=".inp"
root="${1%$string}"

#if [ -z $1 ]
#then
#  echo 'Usage: subGamess.sh <jobinput>'
#  exit 1
#fi

#if [ ! -f ./$root.inp ]
#then
#  echo '<jobinput> does not look like an Orca input \(*.inp\)'
#  exit 1
#fi

if [ -f $root.slurm ]
then
   rm $root.slurm
fi

echo '#!/bin/bash'>>$root.slurm
echo '#SBATCH --job-name='$root>>$root.slurm
echo '#SBATCH --output='$root'.out'>>$root.slurm
echo '#SBATCH --nodes=1'>>$root.slurm
echo '#SBATCH --ntasks-per-node=12 '>>$root.slurm
echo '#SBATCH --time=0-48:00:00 '>>$root.slurm
echo '#SBATCH --cluster=smp'>>$root.slurm

echo 'cd $SBATCH_O_WORKDIR'>>$root.slurm
echo 'module purge'>>$root.slurm
echo 'module load orca/3.0.3'>>$root.slurm

echo 'files=('>>$root.slurm
echo  $root'.inp'>>$root.slurm
echo ')'>>$root.slurm
echo 'for i in ${files[@]}; do'>>$root.slurm
echo '     sbcast $SLURM_SUBMIT_DIR/$i $SLURM_SCRATCH/$i'>>$root.slurm
echo 'done'>>$root.slurm

echo 'export LD_LIBRARY_PATH=/usr/lib64/openmpi-
1.10/lib:$LD_LIBRARY_PATH'>>$root.slurm
echo 'export PATH=/usr/lib64/openmpi-1.10/bin:$PATH'>>$root.slurm

echo 'cd $SLURM_SCRATCH'>>$root.slurm

echo '$(which orca) '$root'.inp'>>$root.slurm
echo 'cp $SLURM_SCRATCH/*.{gbw,prop} $SLURM_SUBMIT_DIR'>>$root.slurm

sbatch $root.slurm

exit

据我所知,我需要导入操作系统,但我基本上迷失了方向。到目前为止我唯一的代码是:

import os
import glob
def orcasubmit():
    for filename in glob.glob('*.inp'):
        #execute subOrca_mpi.sh for all input files in given folder

orcasubmit()

任何输入都会非常有帮助。

最佳答案

这里有两种选择。正如您可能已经猜到的,第一个是使用 os.system 。你可以这样做:

for filename in glob.glob('*.inp'):
    os.system('./' + filename) # assuming these files lie in the same directory

或者,您可以使用 subprocess.Popen模块,我推荐这个。

from subprocess import Popen
for filename in glob.glob('*.inp'):
    process = Popen(['/bin/bash', filename])

关于python - 使用Python向 super 计算机提交多个作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44891849/

相关文章:

python - 使用 Python 在 OpenCV 中检测线条和形状

python - 在 TensorFlow 中再现 scikit-learn 的 MLPClassifier

linux - 如何在 Linux 中使用 VLC 执行 nohup 命令

javascript - 导入失败 - 未捕获的 ReferenceError : function is not defined

python - 找到回文python空间复杂度?

python - 我应该在生产 dockerfile 中使用 Poetry 吗?

linux - 在 linux 中使用 bash 脚本删除文件中的文本

bash - 如何通过 strace 将多个带空格的文件名传递给命令?

从另一台服务器导入css

java - NoClassDefFoundError:org/jagatoo/input/listeners/InputListener