python 任务管理引擎_python包之drmaa:集群任务管理

本文介绍了如何使用Python的drmaa包来管理集群任务,包括drmaa的基本概念、安装配置、任务提交、任务控制和状态查询。通过示例代码展示了如何创建会话、运行工作、等待工作、控制工作以及查询工作状态。
摘要由CSDN通过智能技术生成

搭建流程时,我们把各个模块脚本都写好了,现在通过编写主程序将模块串起来,那么怎么样依次(或者并行)将任务自动投递到集群呢?就是说这一步运行完之后,下一步自动运行。我们当然可以在脚本中设一个标志,反复检查这一个标志是否出现来决定是否运行下一步,但这种方法太原始,太多弊端了,耗内存,无法并行,且不可预料的出错。那么,有没有相应的工具来管理集群任务投递?有,python的drmaa包可以实现。

1. drmaa简介

Distributed Resource Management Application API (DRMAA),即分布式资源管理应用程序API,是一种高级 开放网格论坛(Open_Grid_Forum)应用程序接口规范,用于向分布式资源管理(DRM)系统(例如集群或网格计算提交和控制作业)。API的范围涵盖了应用程序提交,控制和监视DRM系统中执行资源上的作业所需的所有高级功能。DRMAA API已在Sun的Grid Engine(SGE)和Condor等作业管理调度系统中实现。关于SGE可参考我的推文:集群SGE作业调度系统

C、C++、Perl、Python等程序语言都开发有相应的drmaa包来实现SGE集群的任务管理。这里记录下drmaa-python:

Github:drmaa-python

PyPi:https://pypi.org/project/drmaa/

2. 安装和配置

要求:Python2.7+;与DRMAA兼容的集群,如SGE。

#安装

pip install drmaa

#设置路径

export SGE_ROOT=/path/to/gridengine #SGE安装的路径

export SGE_CELL=default

#设置库

export DRMAA_LIBRARY_PATH=/usr/lib/libdrmaa.so.1.0

#libdrmaa.so.1.0 C动态库,是libdrmaa-dev包的一部分

3. 示例

3.1 开始和终止会话

Session

#!/usr/bin/env python

import drmaa

def main():

"""Create a drmaa session and exit"""

with drmaa.Session() as s: #自动初始化,组织工作提交

print('A session was started successfully')

#with结束自动exit(),大部分函数都要在exit()前执行,如runJob/wait,getContact可在exit()后。

if __name__=='__main__':

main()

使用可重新连接的会话,可以将DRMAA库初始化为上一个会话,从而允许该库访问该会话的作业列表.

#!/usr/bin/env python

import drmaa

def main():

"""

Create a session, show that each session has an ID, use session ID to

disconnect, then reconnect. Finally, exit.

"""

s = drmaa.Session()

s.initialize()

print('A session was started successfully')

response = s.contact

print('session contact returns: %s' % response)

s.exit()

print('Exited from session')

s.initialize(response) #初始化上个session

print('Session was restarted successfullly')

s.exit()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值