工作流引擎
Noodles的Python项目详细描述
| rtfd travis zenodo codecov
面条-python的简单并行编程
通常,计算机程序可以通过在 parallel(同时),而不是synchronously(在 另一个)。
一个简单的例子可能是您分配两个变量,如下所示a = 2 * i
以及b = 3 * i
。这两个语句都只依赖于i
,但是
在b
之前指定a
或者反之亦然,这与您的程序如何
作品。无论什么时候,都有可能加速一个程序,
因为a
和b
的赋值可以并行完成,使用
你电脑的CPU上有多个内核。显然,对于简单的作业
a = 2 * i
,时间不多,但是如果a
是
耗时函数的结果,例如a = very_difficult_function(i)
?
如果你的程序多次调用这个函数,比如list_of_a = [very_difficult_function(i) for i in list_of_i]
?潜在的加速可能
太棒了。
所以,计算机程序的并行执行对于提高性能是很有帮助的, 但是你如何告诉计算机哪些部分应该并行执行,以及 哪些部分应该同步执行?您如何确定订单 由于最佳顺序可能不同于 部件在程序中出现的顺序。这些问题很快就变成 当你的程序在 发展。因此,许多开发人员接受 程序只是因为它避免了与保持 跟踪程序的哪些部分取决于哪些其他部分。
吃面条。
面条是一个python包,它可以自动构造一个callgraph 对于给定的python程序,精确列出哪些部分取决于哪些部分。 此外,noodles随后可以使用callgraph并行执行代码 在使用多核的本地计算机上。如果你愿意,你甚至可以 配置面条,使其能够远程执行代码,例如在 群集计算机中的大型计算节点。
安装
从pypi安装最新版本:
。代码::bash
pip install noodles
或者,如果克隆此存储库,
。代码::bash
git clone git@github.com:NLeSC/noodles.git
cd noodles
pip install .
要启用Xenon进行远程执行,必须安装Java,并且Xenon 可使用
安装。代码::bash
pip install '.[xenon]'
如果找不到Java(Xenon需要),请运行
。代码::bash
export JAVA_HOME="/usr/lib/jvm/default-java" # or similar...
在shell初始化脚本中(比如~/.bashrc
)。
要启用基于tinydb的作业数据库,请运行
。代码::bash
pip install '.[prov]'
如果要中断正在运行的工作流并继续 您离开或在多次运行中重用结果。
要运行单元测试,请运行
。代码::bash
pip install '.[test]'
tox
有些测试取决于正在安装的可选模块。如果 如果进口失败。如果你想测试所有的东西,确保你有核 也安装了。
文档
所有最新的文档都可以在Read the Docs <https://noodles.rtfd.io/>
上找到。
。|特拉维斯图片:https://travis-ci.org/NLeSC/noodles.svg?branch=master :目标:https://travis-ci.org/NLeSC/noodles :alt:特拉维斯 ……|泽诺多图像:https://zenodo.org/badge/45391130.svg :目标:https://zenodo.org/badge/latestdoi/45391130 :alt:doi选项 ……| codecov图像:https://codecov.io/gh/NLeSC/noodles/branch/master/graph/badge.svg :目标:https://codecov.io/gh/NLeSC/noodles ……| rtfd图像:https://readthedocs.org/projects/noodles/badge/?version=latest :目标:https://noodles.readthedocs.io/en/latest/?badge=latest :alt:文档状态