没有项目描述

pycoeman的Python项目详细描述


**当前未维护此存储库。我们欢迎人们来fork这个存储库进行进一步的开发和维护。**



\pycoeman

[![构建状态](https://travis-ci.org/nlesc/pycoeman.svg?branch=master)(https://travis ci.org/nlesc/pycoeman)
[![科达西徽章](https://api.codacy.com/project/badge/grade/41716B834DF246A8CCE742AC068FCE)(https://www.codacy.com/app/omrubi/pycoeman?utm_source=github.com&;utm_medium=referral&;utm_content=nlesc/pycoeman&;utm_campaign=badge_grade)
[![doi](https://zenodo.org/badge/22553/nlesc/pycoeman.svg)](https://zenodo.org/badge/latestdoi/22553/nlesc/pycoeman)


python commands execution manager

pycoeman是一个用于执行命令行命令的python工具包。它允许执行:

-顺序命令:这是一系列命令行命令,将一个接一个地执行。换句话说,这是一组命令,通常在bash脚本中执行。通常,命令之间存在IO依赖关系(一个命令需要一个或前一个命令的输出)。

-并行命令:这是一组并行执行的命令行命令。换句话说,这是一组命令,通常在bash脚本中执行,所有命令都作为后台作业(最后是&;命令)。命令之间不能有IO依赖项。这对于令人愉快的并行解决方案非常有用,即在编程级别是单核的工具,但在数据级别可以并行化,通常需要一些最终的合并过程。

pycoeman在命令执行期间添加了cpu/mem/磁盘监视,它允许c创建干净的执行环境以便于管理执行(这些命令将在不同的文件夹中执行,这些文件夹与输入数据的位置分开)。pycoeman有工具可以在本地(在本地计算机中)运行顺序命令和并行命令,还可以在一组可通过ssh访问的远程主机中以及在sge集群(带有sun grid engine批处理队列系统的计算机集群)中运行并行命令。pycoeman是使用xml文件配置的。

pymicmac使用pycoeman(https://github.com/improphoto/pymicmac)

它需要Python3.5,并且是使用PIP安装的。
如果Python3.5不是用户系统上的默认Python,则用户应使用**pip3**安装*pycoeman*
以避免依赖项和版本的问题,并间接使用权限,应使用[**virtualenv**](https://virtualenv.pypa.io/en/stable/)。

*安装系统包依赖项
````
sudo apt get install freetype libssl dev libffi dev
````

*从源安装*pycoeman*:
````
git clone https://github.com/nlesc/pycoeman
cd pycoeman

暂停:
sudo apt get install virtualenv

virtualenv pycoeman_env
。pycoeman_env/bin/activate

pip3-r requirements.txt安装。
````

*安装*pycoeman*包:
```
pycoeman_env/bin/activate

`````

>安装使以下命令行工具可用:`coeman seq local`,`coeman par local`,`coeman par ssh`和`coeman par sge`

nds以*顺序模式*或*并行模式*执行。命令、它们的参数和所需的文件/目录
都列在xml配置文件中。与执行模式无关,这些命令要么在用户的计算机上执行(带有*local*
后缀的命令),要么分布在一组计算机上(带有*ssh*或*sge*su的命令FFIX)。带*ssh*后缀的使用**ssh**在
远程主机上运行命令。后缀为*-sge*的命令将作为作业提交给Sun Grid引擎队列系统。

\`<;命令>;`。对文件/目录的依赖项应使用"<;require>;"或"<;requirelist>;"标记指定。(软)
在指定文件/文件夹的执行文件夹中创建链接。对于少量必需的文件/文件夹,建议使用"<;require>;",并用逗号分隔。当所需文件/文件夹的数量较大时,建议使用"<;RequireList>;"。在这种情况下,它们在
一个单独的ascii文件中指定,每行一个文件/文件夹。"<;require>;"和"<;requirelist>;"都可以同时使用。

一旦定义了顺序模式xml配置文件,用户就应该使用工具"coeman seq-[local ssh sge]`来执行它们。对于
本地执行,需要注意的是,由于所有命令都在同一个执行文件夹中执行,因此对于其中一个命令(使用`<;require>;`或`<;requirelist>;`),它们不需要再次链接。在下面的示例中,*inputfile1*和
*inputfile2*链接到*executable1*并重新用于*executable2*
```
<;seqcommands>;
<;component>;
<;id>;executable1<;/id>;
<;requirelist>;listmiages.txt<;
<;需要输入文件1 inputfile2<;
<;lt;lt;命令>;可执行1*jpg-inputfile1-inputfile1-o outputfile1-o outputfile1<;lt;命令>;
><;lt;lt;lt;lt;lt;lt;lt;lt;><;lt;>><;lt;lt;lt;gt;lt;lt;gt;可执行2<;lt;id>;lt;<;lt/><;lt;lt;lt;命令>;可执行1-inputfile1-outputfile1<;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;并行模式/>parallel commands xml配置文件必须包含根标记"<;parcommands>;",并且对于每个命令,xml元素"<;component>;"将添加三个强制嵌套的xml元素"<;id>;"、"<;command>;"和"<;output>;"。后者决定哪些文件和目录应作为输出进行收集。文件/目录上的依赖项
应使用"<;require>;"或"<;requirelist>;"标记指定。(软)在执行文件夹中为指定的
文件/文件夹创建链接。对于少量必需的文件/文件夹,建议使用"<;require>;",并以逗号分隔指定它们。当所需文件/文件夹的数量较大时,建议使用`<;requirelist>;`
。在这种情况下,它们是在单独的ascii文件中指定的,每行一个文件/文件夹。
可以同时使用`<;require>;`和`<;requirelist>;'。

一旦定义了并行模式xml配置文件,用户就应该使用工具"coeman par-[local ssh sge]`来执行它们。在
并行模式下运行时,命令在不同的执行文件夹中执行,并且可能在多台计算机中执行。对于每个命令,所需的数据从启动pycoeman工具的位置复制/链接到远程执行文件夹。成功执行命令后,标记"<;output>;"下列出的
文件将复制回启动pycoeman工具的位置。

对于数据可用性,执行模型不共享任何内容,即,'<;require>;'和'<;requirelist>;'指示的数据不在不同的
命令执行之间共享。因此,在每个命令中,"<;require>;"和"<;requirelist>;"必须指示所有必需的数据。这与sequ中的不同在执行命令时,*命令A*中的所需数据可以与其他命令共享,因为它们都在同一个执行文件夹中执行。
在下面的示例中,*listimage.list*需要指定为*<;requirelist>;*对于*executable1*和*executabLE2*命令。
````
<;parcommands>;
<;component>;
<;id>;可执行1<;/id>;
<;require list>;listmiages.list<;/requirelist>;
<;需要>;parallelconfig/0配置.xml<;/require>;
<;命令>;可执行1*jpg 0配置.xml-o output1<;/command>;
<;output>;output1<;/output>;
<;/component>;
<;component>;
<;id>;可执行1<;/id>;
<;Requirelist>;ListImages.List<;/Requirelist>;
<;Required>;Parallelconfig/1配置.xml<;/Required>;
<;command>;可执行1*jpg 1_config.xml-o output2<;/command>;
<;output2<;/output2<;
<;/component>;
<;/parcommands>;
```


宿主。除了xml配置文件之外,用户还需要
来指定hosts xml文件。主机XML文件的每个主机都有一个`<;host>;`XML元素和五个嵌套的XML元素:`<;name>;`to define host
name,`<;user>;`user name at the remote host,`<;setenv>;`to
定义同时执行的命令数,`<;exedir>;`为每个命令的执行目录指定根目录
(然后每个命令将使用`<;exedir>;/<;commandid>;`作为执行目录)。hosts xml文件的示例如下:

```
<;hosts>;
<;host>;
<;name>;localhost<;/name>;
<;user>;oscarr<;/user>;
<;setenv>;/home/oscarr/.bashrc<;/setenv>;
<;numcommands>;4<;/numcommands>;
<;exedir>;/home/oscarr/test_remote_ssh<;/exedir>;
<;/host>;
````

**重要事项:**
*所有必需的数据都使用scp发送到远程节点,因此主机名必须是有效的ssh可访问主机名。假设所有相关主机都可以使用
无密码ssh连接。所以,在运行"coeman par ssh"之前,请确保是这样的。要设置与远程主机的无密码连接,请使用ssh密钥:使用"ssh keygen"在本地生成密钥,并使用"ssh copy id<;remotehost>;"将本地公钥添加到远程计算机。
*假设pycoeman和每个命令所需的所有软件都安装在远程主机。
*由"<;setenv>;"指定的文件用于在远程主机上加载环境。因此,用户应该确保所有依赖项,包括
*pycoeman*都是通过`<;setenv>;``加载的。环境变量也是如此。

sge clusters

sge集群应该在所有节点上都有一个可访问的共享文件夹。不鼓励所有节点同时读写共享存储。因此,出于性能原因,用户应将输入数据从共享存储复制到节点的本地存储,并使用本地目录存储命令的输出。

后缀为"-sge"的工具的输出是一个提交脚本。
用户应该运行它将不同的作业提交给sge队列系统。假设所有节点之间共享软件位置
,并且setenv文件将在所有节点中正确设置环境s.

艾德)还可以监视磁盘使用情况(数据目录的可用文件系统存储与已用文件系统存储)。监视文件是在执行文件夹中创建的。具体来说是一个.mon文件、一个.mon.disk和一个.log文件。第一个包含cpu/mem使用监控,第二个包含磁盘使用监控,第三个是执行命令生成的日志。要获取CPU和内存使用情况的统计信息,请使用"coeman mon stats"工具;要绘制CPU和内存使用情况,请使用"coeman mon plot cpu mem"工具;要绘制磁盘使用情况,请使用"coeman mon plot disk"工具。

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

推荐PyPI第三方库


热门话题
ArrayList Java中的搜索字符串   另一个web应用程序的java访问会话   另一个应用程序中的活动和服务之间的java通信   java根据Json字符串类型将Json字符串转换为对象   eclipse如何解决java中的错误异常。lang.NoSuchMethodError:'java。字符串javax。摆动JOptionPane。showInputDialog(java.lang.String)'   线程“main”java中的安卓异常。lang.NoClassDefFoundError:org/codehaus/jackson/JsonParseException   java如何在安卓 emulator上显示Mat图像?使用NDK   Java在本地读取测试源文件,但在服务器上读取失败   java dowhile循环用于计算输入数字中的数字。故障排除代码   JAva初学者在编写获取成本的方法时遇到困难   java是shell游戏。我如何让物体移动,特别是在特定的曲线上,但顺序是随机的?   java如何区分两个同名的JButton   java为什么我在Spring Boot中需要一个接口?   java将文件路径插入数据库将删除\   使用InterfaceType初始化java对象   java如何部署一个分为Angular、Spring Boot和MySQL的项目?   java如何使用Symja解决不等式?