在qsub中运行python脚本

时间:2017-03-07 13:11:49

标签: python qsub torque

我有一个python脚本main_script.py,如下所示:

import os

Files = os.listdir(os.path.join(path, "."))
FilesNumber = len(Files)

for fileID in range (0,FilesNumber):
    filename = Files[fileID]

    # load file specified in filename and do stuff

基本上它对变量Files

中的每个文件执行相同类型的操作

我想使用qsub来并行化for循环。

假设我有一个包含所有文件名的txt文件files.txt

//mypath//pathfile1
//mypath//pathfile2
...
//mypath//pathfile100

如何编写调用qsub并运行main_script.py的shell脚本 我认为我还需要调整main_script.py,但我不知道如何......

调度程序是Torque / Maui

1 个答案:

答案 0 :(得分:6)

从作业脚本调用任何可执行文件的一种方法是将其包装在bash脚本中:

#/bin/bash

<full path to call executable>

如果您将该脚本命名为script.sh,并且script.sh是可执行的,那么您可以执行:

qsub script.sh

它将被提交给批处理系统。陷阱 - 您可能已经知道 - 是这样的:如果您的可执行文件无法从计算节点访问,那么在作业执行时将找不到它。对于您的脚本正在使用的文件也是如此,因此您需要确保它们都位于适当的位置,通常是网络可访问的文件系统。

如果您想直接提交python脚本,可以添加:

#!/usr/bin/python 

到顶部(仔细检查python在你的系统上的/ usr / bin中)然后你可以直接qsub你的python脚本。在你的情况下,

qsub main_script.py

以这种方式提交时,脚本不再必须位于网络可访问的位置,但输入文件仍然可以。