我想用SGE(QSUB)在集群的不同节点上运行一个python函数,比如my_fun(x1,x2)
。我创建了一个脚本my_script.py
,它接受来自命令行的数值参数,因此在本地运行时,我将其称为
python my_script.py x1 x2
现在我想将这个脚本以不同的x1和x2值的循环提交给集群。另外,为了使节点能够访问python和已安装的模块,我需要在节点上运行module load Python/2.7
,然后再通过QSUB调用python脚本。在
这看起来是一个非常简单和典型的用例,但是我在Python中找不到任何直接的方法来实现这一点。在BASH和Python之间来回切换似乎有点笨拙。在
我建议您根据节点的数量将作业划分为多个独立的作业。在
对于每个节点/核心,创建一个文件夹,其中包含该子任务应处理的参数列表。然后在python中,编写一个脚本来读取文件并调用您的脚本(可能使用多处理模块来支持多核)。在
编辑:
如果要通过qsub传递其他参数,可以使用可以传递到脚本的参数调用qsub:
您可以找到此文档here
这或多或少符合我的要求:
https://gist.github.com/timflutre/a9085660271bd059f71c
相关问题 更多 >
编程相关推荐