我有一个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
答案 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
以这种方式提交时,脚本不再必须位于网络可访问的位置,但输入文件仍然可以。