一个python库和简单的命令行前端,用于向多个资源提交计算作业。

gc3pie的Python项目详细描述


gc3pie是一个用于执行计算工作流的python包 由具有复杂相互依赖关系的任务组成。GC3PIE完成 这是通过定义一个运行时任务列表,其中一个任务只能是 所有上游任务依赖项成功执行后执行 完整的。与其他工作流管理器不同,gc3pie应用程序 是用python而不是标记语言编写的。好处是 这使得编写高度复杂的工作流变得很简单。GC3PIES根 处于无共享的实现结构中(例如服务器较少),并且可以 配置为使用后端,如批处理群集或云。

gc3pie是一套python类(以及构建的命令行工具 帮助向集群提交和控制批处理作业 和网格资源无缝连接。GC3PIE旨在提供 组合了多个python脚本的构建块 动态工作流中的应用程序可以快速开发。

GC3PIE套件由三个主要组件组成:

  • GC3Libs: A python package for controlling the life-cycle of a Grid or batch computational job
  • GC3Utils: Command-line tools exposing the main functionality provided by GC3Libs
  • GC3Apps: Driver scripts to run large job campaigns

gc3libs

gc3libs提供向网格提交计算作业的服务 和批处理系统,控制它们的执行,持久化作业 信息,并检索最终输出。

gc3libs采用面向应用的批量计算方法。一个 泛型Application类为 控制远程计算,但不同Application 子类可以公开经过调整的接口,重点是 所代表的应用程序的相关方面。特定的 已经为GAMESSRosetta套件提供了接口; 通过将泛型 Application类。

gc3实用程序

大多数情况下,用户在几个 多种资源。gc3utils的基本思想是用户可以 从一个地方提交并控制一个计算作业 简单的命令。

提供了提交作业(gsub)的命令,检查其运行情况 状态(gstat),获取输出文件的快照(ggetgtail,或者取消它(gkill)。

GC3apps

在一些科学界,有必要开展大量的工作 分析大量数据文件的活动 申请。gc3utils实现的单作业级控制 在这种情况下还不够:您必须实现“粘合脚本” 一次控制成百上千个脚本。GC3PIE有规定 为此,以可重用的python类的形式实现 工作族的单点控制。

gc3apps脚本是使用 对一大组输入数据支持的应用程序。他们可以是 按原样在生产中使用,或适应您的数据处理需要。

一个简单的例子

在examples目录中有几个示例和一个教程。

importsysimporttimeimportgc3libsclassGdemoSimpleApp(gc3libs.Application):"""
    This simple application will run `/bin/hostname`:file: on the remote host,
    and retrieve the output in a file named `stdout.txt`:file: into a
    directory `GdemoSimpleApp_output`:file: inside the current directory.
    """def__init__(self):gc3libs.Application.__init__(self,# the following arguments are mandatory:arguments=["/bin/hostname"],inputs=[],outputs=[],output_dir="./GdemoSimpleApp_output",# the rest is optional and has reasonable defaults:stdout="stdout.txt",)# Create an instance of GdemoSimpleAppapp=GdemoSimpleApp()# Create an instance of `Engine` using the configuration file present# in your home directory.engine=gc3libs.create_engine()# Add your application to the engine. This will NOT submit your# application yet, but will make the engine awere *aware* of the# application.engine.add(app)# in case you want to select a specific resource, call# `Engine.select_resource(<resource_name>)`iflen(sys.argv)>1:engine.select_resource(sys.argv[1])# Periodically check the status of your application.whileapp.execution.state!=gc3libs.Run.State.TERMINATED:print"Job in status %s "%app.execution.state# `Engine.progress()` will do the GC3Pie magic:# submit new jobs, update status of submitted jobs, get# results of terminating jobs etc...engine.progress()# Wait a few seconds...time.sleep(1)print"Job is now terminated."print"The output of the application is in `%s`."%app.output_dir

这就是代码运行时的样子:

$ python gdemo_simple.py localhost
gdemo_simple.py: [2019-01-21 14:37:53] INFO    : Computational resource 'localhost' initialized successfully.
Job in status NEW
gdemo_simple.py: [2019-01-21 14:37:55] INFO    : Successfully submitted GdemoSimpleApp@7f07aa094a90 to: localhost
Job in status SUBMITTED
Job is now terminated.
The output of the application is in `./GdemoSimpleApp_output`.

输出文件如下:

$ cat GdemoSimpleApp_output/stdout.txt
93607d089233

安装说明和进一步阅读

有关最新信息,请阅读GC3PIE文档: http://gc3pie.readthedocs.io/

安装说明在INSTALL.rst文件中(在这个 同一目录),或者可以在线阅读: http://gc3pie.readthedocs.io/en/latest/users/install.html

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何克服带有空值的不可空bean级验证   “此行有多个标记”的authenticateUser上的java MySQLConnection错误   java处理Jackson异常   java Netbeans编辑器如何知道文件在撤消后不会被修改?   目标C相当于Java的ArrayList   java当需要int时,可以将short传递给方法调用吗?   drawString()方法上的java MouseListener   java服务器socket是执行此操作的最佳选项   java需要单个匹配bean,但找到了2:org。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerMapping   如何在Java中执行Windows命令?   安卓应用程序的java文件主机   java将所有spring引导属性都设置在内。将yml文件转换为系统属性   Java邮件中的html内联链接在邮件客户端中不起作用   Java二进制文件的bazel版本控制   java如何在自定义ListView中使用Intent   java(Spring MVC+Hibernate 4+Test 4)自动连线DAO返回NULL   java一次add()调用可以在Solr服务器中索引多少文档?   java如何获取Avro GenericRecord大小