我有一个 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/