返回顶部
首页 > 资讯 > 后端开发 > Python >Python入门学习之Python流处理过程
  • 400
分享到

Python入门学习之Python流处理过程

2024-04-02 19:04:59 400人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录Faust简介高可用性分布式的快速灵活性安装绑定下载并从源文件中安装使用开发版本常见问题 Faust是一个流处理库,将kafka流中的思想移植到python中 它被用于Robin

Python流处理

Faust是一个流处理库,将kafka流中的思想移植到python

它被用于Robinhood去构建高性能的分布式系统和实时数据通道,每天处理数十亿的数据。

Faust同时提供流处理和事件处理同类型的工具分享例如:Kafka Streams, Apache spark/StORM/Samza/flink

它不需要使用一个DSL,仅需要用到Python!这意味着你在做流处理的时候可以使用所有你喜欢的Python库:

NumPy, PyTorch, pandas, NLTK, Django, flask, sqlAlchemy等等。

由于需要使用新的async/await语法和变量类型注释方法,Faust需要使用python3.6以上的版本。

这里有一个处理输入命令流的示例:

Python流处理

这个agent装饰器定义了一个“流处理器”,它本质上是一个Kafka topic,并且可以对接收到的每个事件做一些处理。

agent是一个async def的函数因此它还可以异步执行其他操作如WEB请求。

这个系统可以持久化状态,执行方式类似于数据库。表被命名成分布式的key/value储存,你可以使用常规的Python字典来做这件事。

在每台机器上的本地用c++编写的超快嵌入式数据库(被称为RocksDB)存储表。

表还可以存储可选的“窗口”聚合计数,以便跟踪“前一天的单击次数”或“前一个小时的单击次数”。与Kafka流一样,我们支持滚动、跳跃和滑动时间窗口,旧窗口可以过期以阻止数据填充。

为了提高可靠性使用Kafka topic作为“预写日志

当一个密钥被更改时,我们将其发布到更新的日志上。备用节点使用这个更新日志来保存数据的精确副本,并在任何节点发生故障时支持立即恢复。

对于用户来说,表只是一个字典,但是数据在重新启动和跨节点复制之间存在,所以在故障发生时其他节点可以自动接管。

您可以通过URL统计页面浏览数量:

Python流处理

发送到Kafka topic的数据是分区的,这意味着点击数将用URL的这种方式进行分片。因此,同一个URL的每个计数都会立刻被传递给同一个Faust worker实例。

Faust支持任何类型的流数据字节、Unicode和序列化结构,同时也支持使用现代Python语法的“模型”来描述流中的keys和value是如何被序列化的。

Python流处理

Faust是静态类型的,使用mypy类型检查器,所以您在编写应用程序时可以充分利用静态类型的优势。

Faust源代码很小,组织良好,是学习Kafka流实现的好资源。

在引言页学习更多关于Faust的知识.jpg

去阅读更多关于Faust,系统请求,安装指导,论坛资源等等,或者直接访问快速开始的教程。在一个编写流处理的应用中去查看关于Faust应用,然后通过使用者手册深入探讨。深层次的信息都根据不同主题在这个手册中进行说明

Faust简介

Faust非常容易使用。在学习其他的流处理方法时,你总是需要从一个复杂的hello-world工程和相应的基础要求开始学习。Faust仅仅需要Kafka,剩下的就是只需要Python,如果你知道Python的话你就可以直接使用Faust去做流处理的工作了,并且它可以整合和他相关的一切。

这儿有一个简单的应用程序你可以做:源代码是Python的

Python流处理

您可能会被async和await这两个关键字吓到,但是您在使用Faust时不需要知道asyncio是如何工作的:只要模仿这些例子就可以得到您想要的结果。

示例应用程序启动两个任务:一个是处理流,另一个是向流发送事件的后台线程。在实际的应用程序中,您的系统将向Kafka topic发布事件,您的处理器可以从Kafka topic获取事件信息,并且只需要后台线程将数据输入到我们的示例中。

高可用性

Faust是高度可用的,并且可以在网络问题和服务器崩溃中生存下来。在节点失败的情况下,它可以自动恢复,并且表将接管备用节点。

分布式的

根据您的应用程序的需要启动更多实例。

快速

一个单内核的Faust worker实例已经可以每秒处理数万个事件,我们有理由相信,一旦我们能够支持一个更优化的Kafka客户端,吞吐量就会增加。

灵活性

Faust就是Python,而流是一个无限的异步迭代器。如果您知道如何使用Python,那么您已经知道如何使用Faust,它可以与您喜欢的Python库一起使用,比如DjanGo、Flask、SQLAlchemy、NTLK、NumPy、Scikit、Tensorflow等等。

安装

您可以通过Python包或从源文件中安装Faust

使用pip安装它:

Python流处理

绑定

Faust还定义了一组setuptools扩展,可以用来安装Faust,并且有一个给定特性的依赖关系。

您可以在您的需求中或在pip命令行中使用方括号来指定它们。使用逗号分隔多个包:

Python流处理

以下的绑定均是有效的:

商店

Python流处理

最优化

Python流处理

传感器

Python流处理

事件循环

Python流处理

调试

Python流处理

下载并从源文件中安装

您可以这样安装它:

image.png

如果当前没有使用virtualenv,则必须以特权用户的身份执行最后一个命令。

使用开发版本

您可以使用以下pip命令安装Faust的最新版本:

Python流处理

常见问题

Faust可以在Django/Flask/etc上使用吗?

使用gevent

这种方法适用于任何可以与gevent一起工作的阻塞Python库。

使用gevent需要您安装aiogevent模块,您可以将其作为Faust的包进行安装:

Python流处理

然后要真正的使用gevent作为事件循环,您要么在faust程序中使用-L <faust --loop>

命令:

Python流处理

要么在你脚本的前面加入import mode.loop.gevent

Python流处理

警告

非常重要的是,它位于模块的最顶端,并且在导入库之前执行。

Faust可以在Tornado上使用吗?

可以!使用tornado.platform.asyncio

链接:Http://www.tornadoweb.org/en/stable/asyncio.html

Faust可以在Twisted上使用吗?

可以!使用asyncio反应器实现:

链接:https://twistedmatrix.com/documents/17.1.0/api/twisted.internet.asyncioReactor.html

是否支持Python3.5或者更早的版本?

目前还没有支持Python 3.5的计划,但是欢迎您为这个项目做出贡献。

以下是实现这一目标所需的一些步骤

  • 源代码转换以重写变量注释到注释

示例,代码:

image.png

  • 重写异步函数的源代码转换

示例,代码:

Python流处理

必须重写:

Python流处理

你将支持Python2吗?

目前还没有支持Python 2的计划,但是欢迎您为项目做贡献(上面问题中的细节也与Python 2相关)。

在本地运行Faust应用程序时,我得到的打开文件的最大数量超过了RocksDB的错误。我该怎么解决这个问题呢

您可能需要增加打开文件的最大数量的限制。

资源

编码规范

在项目代码库、问题跟踪器、聊天室和邮件列表中进行交互的每个人都应该遵循《Faust行为准则》。

作为这些项目的贡献者和维护者,为了培养开放和受欢迎的社区,我们承诺尊重所有通过报告问题、发布特性请求、更新文档、提交合并请求或补丁和其他活动的人。

我们致力于使参与这些项目的每个人都无骚扰体验,不论其经验水平、性别、性别认同和表现、性取向、残疾、个人外貌、体型、种族、种族、年龄、宗教或国籍。

参与者不良行为包括:

  • 性化的语言或意象的使用
  • 个人人身攻击
  • 恶意破坏或侮辱/侮辱性的评论
  • 公共或者私人的骚扰
  • 未经明确许可,发布他人的私人信息,如住址或电子地址
  • 其他不道德或不专业的行为。

项目维护人员有权利和责任删除、编辑或拒绝评论、提交、代码、wiki编辑、问题和其他与行为准则不一致的贡献。通过采用这一行为准则,项目维护者承诺在管理这个项目的每个方面都公平、一致地应用这些原则。不遵守或执行行为准则的项目维护者可能被永久地从项目团队中删除。

当个人代表项目或社区时,此行为准则适用于项目空间和公共空间。

可以通过创建一个问题或联系一个或多个项目负责人来举报虐待、骚扰或其他不可接受行为。

以上就是Python入门学习Python流处理过程的详细内容,更多关于Python入门的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python入门学习之Python流处理过程

本文链接: https://lsjlt.com/news/135106.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python入门学习之Python流处理过程
    目录Faust简介高可用性分布式的快速灵活性安装绑定下载并从源文件中安装使用开发版本常见问题 Faust是一个流处理库,将kafka流中的思想移植到Python中 它被用于Robin...
    99+
    2024-04-02
  • Python入门学习之operator-
    本模块主要包括一些Python内部操作符对应的函数。这些函数主要分为几类:对象比较、逻辑比较、算术运算和序列操作。 操作  语法 函数 相加 a + b  add(a, b) 字符串拼接 ...
    99+
    2023-01-31
    入门 Python operator
  • python入门之算法学习
    前言 参考学习书籍:《算法图解》[美]Aditya Bhargava,袁国忠(译)北京人民邮电出版社,2017 二分查找 binary_search 实现二分查找的python代码...
    99+
    2024-04-02
  • ​​​​​​​Python 入门学习之函数式编程
    目录前言把函数作为对象把对象作为函数数据结构内的函数把函数作为参数和返回值嵌套函数单表达式函数(Lambda 表达式)Map、Filter 和 ReduceMapFilterRedu...
    99+
    2024-04-02
  • python入门学习
    首先在官网下载好python3.6及以上的版本,根据自己的系统选择:没有显示64位的就是32位的安装包,选择蓝线的能够直接打开 在控制台输入python,配置成功的图片如下: 从IDLE打开python输入指令 print("I lo...
    99+
    2023-01-31
    入门 python
  • python入门学习之变量篇
    【前言】在公司内部wiki上看到一个不错的学习网站,遂开始了我这慢悠悠的学习之旅。网站链接:https://www.codecademy.com1.理解布尔值一种数据类型。简单来说,正如你家里的电灯有开关两种状态一样,布尔值同样也有两个值,...
    99+
    2023-01-31
    变量 入门 python
  • Python机器学习入门(二)之Python数据理解
    目录1.数据导入1.1使用标准Python类库导入数据1.2使用Numpy导入数据1.3使用Pandas导入数据2.数据理解2.1数据基本属性2.1.1查看前10行数据2.1.2查看...
    99+
    2024-04-02
  • Python多线程入门学习
    Python 中使用线程有两种方式:函数或者用类来包装线程对象。 函数式: 调用 thread 模块中的start_new_thread()函数来产生新线程。 语法如下: thr...
    99+
    2024-04-02
  • VUE入门学习之事件处理
    目录1.函数绑定2.带参数和$event 3.多个函数绑定一个事件4.事件修饰符5.按键修饰符 6. 系统修饰键 .exact 修饰...
    99+
    2024-04-02
  • python 学习之路1-如何入门
    过去20年,我一直有一个想法就是学一门编程语言,可惜一直没有实现。C我看过,C++也看过,PHP了解过,最后是的没有最后。。。。。 回望过去简单说就是没有懂到底学习了什么,也无法把学习到的知识应用到实际,然后往开发走,所有我...
    99+
    2023-01-31
    之路 入门 python
  • Python入门学习(六)
    在熟悉了Python中常用的一些内置函数, 那接下来我们定义一个自己的函数吧 def add(x, y): return x + y 函数 函数语法 def functonname(parameters): ... ...
    99+
    2023-01-31
    入门 Python
  • 好程序员Python学习路线之python爬虫入门
      好程序员Python学习路线之python爬虫入门,随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yaho...
    99+
    2023-06-02
  • Python画图学习入门教程
    本文实例讲述了Python画图的基本方法。分享给大家供大家参考,具体如下: Python:使用matplotlib绘制图表 python绘制图表的方法,有个强大的类库matplotlib,可以制作出高质量的...
    99+
    2022-06-04
    画图 入门教程 Python
  • Python入门学习路线
    Python技术路径中包含入门知识、Python基础、Web框架、基础项目、网络编程、数据与计算、综合项目七个模块。路径中的教程将带你逐步深入,学会如何使用 Python 实现一个博客,桌面词典,微信机器人或网络安全软件等。完成本路径的基...
    99+
    2023-01-30
    入门 路线 Python
  • Python 入门学习笔记
    1 安装Anaconda和jupyter notebook   之前没有听说过这两个名词,然后看完介绍,按照我自己的理解,Anaconda是一个集合很多环境和模块的存储地方。 Jupyter notebook 就是一个可以在此环境里打代码...
    99+
    2023-01-30
    学习笔记 入门 Python
  • Python基础学习入门
    Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。在命令行窗口输入"python" 命令来查看本地是否已经安装Python以及Python的安装版本Python下载Python官网:http://www...
    99+
    2023-06-02
  • ​​​​​​​Python入门学习之函数式编程的方法
    本篇内容介绍了“Python入门学习之函数式编程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在 Python 中,函数是「头等公...
    99+
    2023-06-30
  • Python学习之利用Python处理J
    最近在研究利用zabbix的自动发现功能来监控一台服务器上的多个Redis端口。网上有篇文章写个Python程序来发现Redis端口并显示成JSON格式。这里就学习下Python如何处理JSON格式数据。处理JSON,需要用到python的...
    99+
    2023-01-31
    Python
  • python学习之异常处理
    一、语法导致的异常,应该在程序运行前处理 例子: print( 输出: File "E:/python/oldboyday9/learn1.py", line 4     if      ^ SyntaxError: invalid sy...
    99+
    2023-01-31
    异常 python
  • Python学习入门基础教程(learn
     在Python里可以自定义函数,实现某特定功能,这里首先要区分一下函数的定义和函数的调用两个基本概念,初学者往往容易混淆。      函数的定义是指将一堆能实现特定功能的语句用一个函数名标识起来,而函数的调用则是通过函数名来使用这一堆语句...
    99+
    2023-01-31
    基础教程 入门 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作