python - 在 qsub 中运行 python 脚本

标签 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

最佳答案

从作业脚本调用任何可执行文件的一种方法是简单地将其包装在 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

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

关于python - 在 qsub 中运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42649232/

相关文章:

linux - 在多线程应用程序中使用 qsub (sge)

linux - 带通配符的命令行 `qdel` 命令

python - 如何通过删除列表中的特定元素来运行给定列表的 itertools 产品?

python - 使用 gmail 在 R 中通过电子邮件发送附件

python - 如何对 Pandas 中的多列进行求和或计数

scheduler - 扭矩/PBS 调度程序如何工作?

mpi - 在 open-mpi/mpi-run 中加载共享库

python - Python播放mp3/wav文件音频(Pygame混音器)

linux - 执行 qsub 获取脚本返回值

linux - 在所有子目录中运行 qsub 命令