在qsub中运行Python脚本

4

我有一个名为main_script.py的Python脚本,内容如下:

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循环。
假设我有一个名为files.txt的txt文件,其中包含所有文件名:
//mypath//pathfile1
//mypath//pathfile2
...
//mypath//pathfile100

如何编写调用qsub并运行main_script.py的shell脚本?我认为我也需要修改main_script.py,但我不知道该怎么做...

任务调度程序是Torque/Maui。


你使用的是哪个调度器?其中一些调度器使用命令 qsub - eduffy
我应该使用Torque/Maui。 - gabboshow
个人推荐:您可以使用fyrd(https://fyrd.science)从Python向Torque或Slurm提交函数,它专门为此类事情而构建。 - Mike D
1个回答

8

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

#/bin/bash

<full path to call executable>

如果您将该脚本命名为script.sh,并使其可执行,则可以执行以下操作:
qsub script.sh

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

如果要直接提交Python脚本,则可以添加:

#!/usr/bin/python 

要将Python安装在系统的/usr/bin目录下(请仔细检查),然后您就可以直接使用qsub命令提交Python脚本。在您的情况下,

qsub main_script.py

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接