2017-03-07 48 views
1

运行一个Python脚本我有一个python脚本main_script.py,看起来像这样:中的qsub

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 我想我还需要适应main_script.py但shell脚本我不知道该怎么...

调度是扭力/毛伊岛

+0

您正在使用哪个调度程序?命令'qsub'被其中的几个人使用。 – eduffy

+0

我应该使用Torque/Maui – gabboshow

+0

个人插件:您可以使用fyrd(https://fyrd.science)从python提交扭矩或slurm函数,它是为这种类型的东西而设计的。 –

回答

1

的一种方式,从一个作业脚本调用任何可执行文件是简单地把它包装一个bash里面脚本:

#/bin/bash 

<full path to call executable> 

如果命名该脚本script.sh和script.sh是可执行的,那么你可以执行:

qsub script.sh 

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

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

#!/usr/bin/python 

顶端(仔细检查蟒蛇是在/ usr/bin中你的系统上),然后就可以直接使用qsub你的python脚本。在你的情况,

qsub main_script.py 

当提交这样,脚本不再是在一个网络访问的位置,但输入文件现在仍然如此。