简单的数据转换管道。

picles.plumber的Python项目详细描述


基于python迭代协议的简单数据转换管道 在Python2.7、3.3和3.4版本上运行。

+----------+      +-------------+      +-------------+      +--------+      +----------+
| Producer | ---> | Transformer | ---> | Transformer | ---> | Tester | ---> | Consumer |
+----------+      +-------------+      +-------------+      +--------+      +----------+

管道模型需要4种过滤器:

  • 生产者:起点,仅限出境;
  • 变压器:输入、处理、输出;
  • 测试仪:输入、丢弃或通过;
  • 消费者:终点,仅限入站。
importplumber@plumber.filterdefupper(data):returndata.upper()ppl=plumber.Pipeline(upper)output=ppl.run("Hey Jude, don't make it bad")print(''.join(output))"HEY JUDE, DON'T MAKE IT BAD"

由于设计基于python的迭代协议,因此生产者和 消费者是普通的物品。变压器的实施方式如下 接受单个参数、执行处理并返回 结果。

也可以根据一些先决条件检查输入数据,以确定 转换是否应该发生或被忽略。例如:

importplumberdefis_vowel(data):ifdatanotin'aeiou':raiseplumber.UnmetPrecondition()@plumber.filter@plumber.precondition(is_vowel)defupper(data):returndata.upper()ppl=plumber.Pipeline(upper)output=ppl.run("Hey Jude, don't make it bad")print(''.join(output))"hEy jUdE, dOn't mAkE It bAd"

预取

如果您认为管道花费了太长时间来向前移动数据, 您可以使用预取功能。要使用它,只需定义 要预取的项的限制。

使用与上面相同的示例:

ppl=plumber.Pipeline(stripper,upper)transformed_data=ppl.run([" I am the Great Cornholio!","Hey Jude, don't make it bad "],prefetch=2)fortdintransformed_data:print(td)IAMTHEGREATCORNHOLIO!"HEY JUDE, DON'T MAKE IT BAD"

默认情况下,预取机制是基于线程的,因此要注意CPU绑定 管道。

安装

PYPI(推荐):

$ pip install picles.plumber

源代码(开发版本):

$ git clone https://github.com/picleslivre/plumber.git &&cd plumber && python setup.py install

使用许可证

本项目根据FreeBSD 2条款获得许可。有关详细信息,请参见LICENSE

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

推荐PyPI第三方库


热门话题
Java中的json IoT模块GET请求   在Java8中,如何使用lambda表达式中的条件?   Java 7中的io,如何通过一个实际示例演示文件之间的差异。存在和文件。不存在?   在Android Studio中使用Java从url获取JSON?   返回k个最小元素的java数组   java如何让我的安卓应用通过facebook登录并获得foursquare等好友列表   java如何在布局中以编程方式生成文本视图   在java中更改系统日期和时间的datetime代码段   java Hibernate和SQLite3,一对多关系映射   java Observable转换成kotlin问题   java在单独的线程中将VBO发送到GPU   属性文件中值的spring Java验证程序注释   java Spring启动:找不到javassist   java SimpleDataFormat时间解析   无法在linux上为Java程序正确设置PATH变量   将文件上载到FTP服务器时发生java异常   基于java TestNG的Selenium测试不能并行运行   java DAO类实例与DAO EJB   tomcat6部署*。使用Java Web Start(JNLP)的war应用程序