一个简单的python函数流水库。

simplepipe的Python项目详细描述


#overview

**simplepipe**是一个用于python的简单的、可组合的、功能性的流水线库。它的建立是为了便于将定义为纯函数的小任务组合起来,以便执行复杂的操作。它支持单输出和多输出任务(通过生成器功能)。**SimplePie**还允许创建挂钩,以便在创建工作流后修改其行为。

[![构建状态](https://travis-ci.org/thomasantony/simplepie.svg?branch=master)(https://travis ci.org/thomasantony/simplepie)
[![pypi版本](https://badge.fury.io/py/simplepipe.svg)(https://badge.fury.io/py/simplepipe)
安装

d,运行python setup.py install

每个任务可以是
python函数、生成器函数或其他工作流对象。原始工作区不受影响。可以链接对"添加任务"、"添加挂钩"和"添加挂钩点"的方法调用。



工作区。
工作流对象本身可以用作完整的工作区任务。这些函数应该返回
一个dict,该dict将与工作区dict上的"update()"方法一起使用。


`` python
im端口simplepie

def do_stuff_with_workspace(workspace):
workspace['c']=workspace['b']*2
return workspace

data_in={'a':1,'b':2}
wf.add_task(do_stuff_workspace)'*'是默认模式
output=wf(data_in)
print(o输出{'a':1,'b':2,'c''a':1,'b''b':2,'c':4}


wf2=simplepipe.workflow()
wf2.a d d_task(wf)将另一个工作流添加为task
wf2.add_task(fn=lambda c:5*c,inputs'c','outputs'd''d')
output=wf(data-in)
print(output)打印{'a''a''a':1,'b''a''a''a''a':1,'b''a''a'>
保护反对变异函数
def bad mutator(工作区):
workspace['a']='只要把你和你在一起就行了
return{'e':'foobar'}

wf3=simplepipe.workflow()
wf3.add wf3.add任务(fn=bad mutator'u mutator'u fn)
output=wf(数据输入)
print(输出)打印{'a''a':1,'b':1,'b':1,'b':2,'e':'foobar''foobbar''fooboobar''a'
}
````

``python
impimpimpimpsimplepipe

desum(a,b):
returna+b

def两次(x):
return 2*x

wf=simplepipe.workflow

` ``````````````` python
` ` ` ` `` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `],输出=['c'])\
.a d d_task(两次,inputs=['c',outputs=['d'])
output=wf(d at a_-in)
print(output)prints{'a':1,'b':2,'c':3,'d':6}
`````


multi-output functions

返回多个值的函数必须使用"yield"关键字分别返回

`` python
import simplepipe

def sum_和_积(a,b):
yiela+b
yiela*b

wf=simplepipe.workflow()
data_in={'a''a''1,'b''2}
wf.a d d_task(sum_和_积,inputs=['a','b'],outputs=['c','d']
output=wf(data_in)
print(print)(print)(print)(print)(print(in)
输出)打印{a':1,'b':2,'c':3,'d':2}
````

\hooks
**simplepipe**还支持允许在创建工作流后自定义工作流的钩子。钩子点是使用"add_hook_point"方法定义的。任何数量的钩子函数都可以绑定到工作流中的钩子点。多HO在同一个挂接点添加的oks将按其添加顺序执行。

*注意:挂接函数不是纯函数,应该改变输出工作区。它们不返回任何内容。*

``python
import simplepie


def sum(a,b):
return a+b

def tween(x):
return 2*x

def do_after_sum(workspace):
workspace['c']*10

def do_after_tween(workspace):
workspace['e']=31337




wf=simplepipe.workflow()

wf.a d d_任务(sum,输入量=['a','b'],输出量=['c'])
wf.add_hook_点('u sum后')
wf.add_任务(两次输入量=['c'],输出量=['d'])
wf.add_钩钩点('afu两次后')
wf.add_钩钩点('afu两次后')

wf.add wf.add钩钩点('u钩钩点('>
可以插入钩子函数在工作流执行之前的任何时间
wf.a d d_hook('after_sum,do_after_sum)
wf.add_hook('after_两次,do_after_两次)



>打印(输出)
{'a'<1,'b''a'a''a''a'a'a'1,'b''2,'c''30,'d''d''60,'e''31337'60'e''e''31337}
`````````



<社交网站LinkedIn个人资料](https://www.linkedin.com/in/thomasantony)



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

推荐PyPI第三方库


热门话题
java如何提高从oracle到mongodb的数据迁移性能   datetime在Java中查找两个日期(包括开始日期和结束日期)之间的差异   GWT2.4中EventBus和Gin的java问题   带有属性的新ArrayList中的java ArrayList   java zxing的“谷歌眼镜”无法识别条形码   java SpringFlex 1.5示例可以工作吗?   java打印()用于预排序中的子树   Double数据类型未返回十进制值(Java)   kerberos SPNEGO身份验证可从自定义Java客户端工作,但不能从Web浏览器工作   实现pixelperfect碰撞Libgdx的java   多线程如何实现在java线程中检查连接是否存在?   Java:使用com时出错(下载错误)。github。阿克塞特。下载YouTube视频   hql中的java区间表达式   java在创建新元素SWT Draw2d时重新创建以前创建的元素   java尝试为Flappy bird程序制作鸟的动画   java从控制器Spring中的最后一次插入中获取生成的Id   迭代器添加同义词不同代码号java   使用GridBagLayout的java布局问题   具有类层次结构的java Spring JDBC行映射器