一个简单的框架,使得在python中处理数据流变得容易。
spout的Python项目详细描述
pout是一个小而简单的框架,它使处理数据变得容易 Python的溪流。特别是喷口的设计采用了 考虑使用实时数据源。
工作原理
喷口的核心是流的概念(定义在 抽象流。这定义了可以 在数据流上执行:
- 映射
一个流中的项可以“映射”到另一个流。这是由 将提供的函数应用于输入流中的每个项,以生成 另一个输出流。
stream.map(函数)
- 过滤
可以“过滤”流中的项,以便仅生成流 包含符合给定条件的项。这是通过使用提供的 谓词来测试输入流中的每个项,并将其复制到输出 如果通过测试标准,则流式处理。
stream.filter(谓词)
- 处理(消耗)
流中的项用于某些计算或功能 不向流提供进一步的输出。这是通过应用提供的 对流中每个项的操作。
stream.for_each(操作)
用法
要使用pout,首先需要创建一个输入数据流。数据流只是 流或其任何子流的实例化(可以在 streams.py文件)。stream类是专门设计的 很容易扩展和环绕当前可能存在的数据源 有,如文件或数据库。
流数据源的一些现有示例可以在SooStru.Py中找到。
例如,要在纯文本文件中创建行外流:
from spout.sources import FileInputStream s = FileInputStream(“test.txt”)
现在您的数据已经在流中,您只需处理它!这个罐头 通过创建和使用自己的函数、谓词或操作来完成 (见上文)。
例如,要打印文本文件中以数字开头的所有行, 但是去掉数字后,我们可以创建自己的谓词和函数 并将它们传递给.filter()和.map()函数:
from spout.sources import FileInputStream from spout.structs import Function, Predicate from spout.outputs import PrintOperation
- class StartsWithDigit(Predicate):
- def test(self, obj):
- return obj[0].is_digit()
- class StripFirstChar(Function):
- def apply(self, input):
- return input[1:]
s = FileInputStream(“test.txt”) s .filter(StartsWithDigit()) .map(StripFirstChar()) .for_each(PrintOperation())
安装
python包索引(pypi)中提供了pout,因此 通过pip安装:
$ pip install spout
但是,也可以从源安装存储库,通过 setup.py实用程序:
$ python setup.py install
学分
pout流畅界面的灵感主要来自openimaj流式处理框架。 http://www.openimaj.org/