将生成器/迭代器链接到处理链、树和图的框架

chainlet的Python项目详细描述


chainlet库提供了一个轻量级模型来创建来自 生成器、协同程序、函数和自定义对象。 与其要求您嵌套代码或插入钩子,chainlet提供了简洁、直观的绑定语法:

# regular nested generatorscsv_writer(flatten(xml_reader(path='data.xml'),join='.'.join),path='data.csv')# chainlet pipelinexml_reader(path='data.xml')>>flatten(join='.'.join)>>csv_writer(path='data.csv')

使用chainlet创建的处理管道是生成器和函数的扩展: 它们可以迭代以获取结果,调用以推送输入,甚至用于获取/获取数据流。 chainlet的绑定允许从简单的构建块组成复杂的处理链。

创建新的链表很简单,只需要定义数据的处理。 使用常规函数、生成器或协程,让chainlet处理其余部分通常就足够了:

@chainlet.genletdefmoving_average(window_size=8):buffer=collections.deque([(yield)],maxlen=window_size)whileTrue:new_value=yield(sum(buffer)/len(buffer))buffer.append(new_value)

功能

我们将chainlet设计成一个简单、直观的库:

  • 用独立的小处理块模块化代码。
  • 直观地从单个元素组成处理链。
  • 自动将函数、生成器和协同程序集成到链中。
  • 使用复杂的链扩展您的处理能力,这些链根据需要分叉和连接。

在引擎盖下,chainlet以最小的方式合并迭代器和函数范例,以保持轻量级。

    完全符合生成器接口,与现有代码集成。
  • 线性管道的隐式尾递归消除和链遍历的过早结束。
  • 迭代地、连续地、甚至异步地推和拉链。
  • 扩展或取代管道遍历和处理的简单接口。

在其核心chainlet努力成为尽可能的Python: 你写python,你就得到python。 没有蹦床、回调、堆栈、处理程序,…

我们会照顾好那些丑陋的部分,这样你就不用了。

想开始吗? 查看我们的文档:Documentation Status

发现问题还是有建议? 直奔我们的问题跟踪者:Open Issues

状态

chainlet库源于我们在数据中心管理中对可访问并发性的需求。 此后,我们在生产环境中为许多用例采用了这个库: *使用基于流的数据提取和转换的模块化监控套件。 *用于同时对多个文件执行并发操作的管理脚本。

处理链、树和图的语法和通用接口都是稳定的。 正在进行的工作主要集中在简化并行迭代接口上。 一个主要的焦点是添加自动并发性、异步性和并行性。 我们的目标是从功能编程和静态优化中选择功能。

最近的变化

1.3.0版

Thread-based concurrent traversal, improved single- and multi-stream distinction.

1.2.0版

Synchronous concurrent traversal, chain slicing and merging, fully featured function and generator wrappers

1.1.0版

Added chainlet versions of builtins and protocol interfaces

1.0.0版

Initial release

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

推荐PyPI第三方库


热门话题
onclicklistner中的java全局变量   Android中的Tensorflow:java。尼奥。BufferOverFlowException   java无法预先部署处于无效状态的PersistenceUnit[PU][DeployFailed]   java Liferay;将其他参数传递给jQuery UI aotocompleter   java如何使用Netflix/Eureka服务中的发现信息在Netflix/Zuul和Netflix/Ribbon中启用自动路由?   java如何使用命令打开spotlight   java Android为按钮分配数组值   jsp java。NoClassDefFoundError:即将推出java servlet   应用程序存储设置的java意图   java Android viewflow验证   java如何为多个列表重用BaseAdapter视图   在Java中,socket通过internet发送多播数据包   JavaXStream加载自定义XML