一个简单的框架,使得在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/

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

推荐PyPI第三方库


热门话题
javascript{“错误”:[“无效图像URL”]}与鸟舍集成   mysql Java语句。executeUpdate(sql)在executeQuery(sql)工作时不工作   在java中反复编辑object/arrayList   java在创建子类实例时是否也创建了超类实例?   如果运行一定次数,java是否仍要生成else?   java gradle eclipse依赖项,跳过testCompile/ProviderRuntime等   java如何用Dozer实例化子类?   java如何在docker容器中高效地构建maven项目?   lambda我想在这个块中转换成java 8流?   java本地广播管理器使用主活动未接收到的警报   更新产品数量时发生java异常(自定义属性)   java在每次迭代后删除2d数组的列和行   java如何在一个片段中存储数据以在另一个片段中获取数据?   java将默认公共构造函数添加到生成的生成器内部类