asyncio

Python 3.9来了!这十个新特性值得关注

末鹿安然 提交于 2020-10-30 07:50:03
  选自towardsdatascience    作者:Farhad Malik    机器之心编译    编辑:陈萍    近日,Python 3.9 发布,并开发了一些新特性,包括字典合并与更新、新的解析器、新的字符串函数等。   Python 3.9 已于 10 月 5 日发布,新版本的特性,你 get 到了吗?对于 Python 程序员来说,这又是一个令人兴奋的时刻。      相比于之前的版本,Python 3.9 有哪些值得讨论的功能呢?   简而言之,从字典更新 / 合并到添加新的字符串方法,再到 zoneinfo 库的引入,Python 3.9 添加了许多新特性。此外,该版本还引入了一种稳定、高性能的新型解析器。   标准库更新了许多新特性,并添加了新模块 zoneinfo 和 graphlib。此外该版本也对许多模块进行了改进,如 ast、asyncio、concurrent.futures、multiprocessing、xml 等。      图源:https://twitter.com/PrasoonPratham/status/1313392420038483968   现在让我们一起探索 Python 3.9 的新特性。    Python 3.9:10 个有趣的新特性    1. 字典更新和合并   字典添加两个新的运算符:「|」和「|=」。「|

AIOHTTP的实战(一)

天大地大妈咪最大 提交于 2020-10-21 20:52:01
aiohttp是基于asyncio和Python的异步HTTP客户端以及服务器,在这里主要介绍aiohttp在客户端应用请求中的案例应用和案例实战。在使用前需要安装该第三方的库,安装的命令为: pip3 install aiohttp 安装成功后可以直接使用。在Python的异步编程模式中,特别是想使用,最好保持Python版本是在Python3.5以上的版本,这是因为asyncio是在Python3.4的版本中开始引入。 我们使用aiohttp发送一个简单的网络请求,如请求http://httpbin.org/get,获取到它的响应数据,那么首先需要定义协程函数,在函数中,在函数名前加关键字async,这样的函数我们称为协程函数。先来看一个案例,源码如下: #!/usr/bin/env python #!coding:utf-8 import asyncio import aiohttp async def getPage (): async with aiohttp.ClientSession() as session: async with session.get( url = 'http://httpbin.org/get' ) as r: print (r.status) print ( await r.text()) if __name__ == '__main__'

Python入门基础:理解协程和生成器

情到浓时终转凉″ 提交于 2020-08-18 12:51:18
由于GIL的存在,导致Python多线程性能甚至比单线程更糟。 GIL:全局解释器锁(英语:Global Interpreter Lock,缩写GIL),是计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅有一个线程在执行。[1]即便在多核心处理器上,使用 GIL 的解释器也只允许同一时间执行一个线程。 于是出现了协程(Coroutine)这么个东西。 协程:协程,又称微线程,纤程,英文名Coroutine。 协程的作用,是在执行函数A时,可以随时中断,去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过程并不是函数调用(没有调用语句),这一整个过程看似像多线程,然而协程只有一个线程执行。 协程由于由程序主动控制切换,没有线程切换的开销,所以执行效率极高。对于IO密集型任务非常适用,如果是cpu密集型,推荐多进程+协程的方式。 在Python3.4之前,官方没有对协程的支持,存在一些三方库的实现,比如gevent和Tornado。3.4之后就内置了asyncio标准库,官方真正实现了协程这一特性。 而Python对协程的支持,是通过Generator实现的,协程是遵循某些规则的生成器。因此,我们在了解协程之前,我们先要学习生成器。 生成器 我们这里主要讨论yield和yield from这两个表达式,这两个表达式和协程的实现息息相关。 Python2

Flink异步IO结合Redisson访问Redis

妖精的绣舞 提交于 2020-08-11 04:34:22
发表于 2019-07-15 | 分类于 大数据 | 0 | 本文总阅读量 165次 Flink异步IO源码简析。 使用Redisson框架封装的异步请求API。 对key进行异步累计递增计数和计算业务值并保存在Redis中。 Lua脚本和事务API。 FLINK v2-异步IO的设计与实现 Flink使用异步IO访问外部数据 AsyncRedisJob代码 AsyncFunction  AsyncFunction是一个异步算子接口,本身继承Function和Serializable。  asyncInvoke()方法会对每一个上游任务下发的流数据进行异步操作,操作完了将结果输出到ResultFuture,回调方式是把ResultFuture传入回调API,Future方式是要调用resultFuture.complete才算异步调用完成【回调和Future看外部系统客户端的封装】。  timeout()方法用来处理异步调用超时的问题,有default修饰,有默认实现,可以不做处理,但通常要做进一步处理。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 @PublicEvolving public interface AsyncFunction<IN, OUT> extends

博客园上传markdown文件

你离开我真会死。 提交于 2020-08-10 08:23:37
个人习惯用markdown写博客,然后同步到博客园,每次同步都比较麻烦。 于是通过metaweblog实现了,一步上传markdown文件的小工具。 工具地址: https://github.com/dongfanger/PyCnblog 关于工具如何使用请访问链接查看readme markdown图片存储设置 写markdown有一利器Typora,一般图片存储设置我会修改成这样。 打开文件>偏好设置,找到'图片插入' 修改为'复制到指定路径',规则设置为./${filename}/ 下面的3个选项全部勾选。 这样当复制粘贴图片到markdown时,就会在目录中新建一个同名文件夹,存储图片。 工具原理 本工具的基本原理是,调用metaweblog的相关api,把图片上传到服务器后,获取url替换本地图片地址,再上传文件到博客园,在博客园后台能看到新博客。 metaweblog是一个开放api,用于和远程blog交互,可以通过xmlrpc建立连接 server = xmlrpc.client.ServerProxy(blog_url) 这里用到了2个api:图片上传.metaWeblog.newMediaObject和博客上传.metaWeblog.newPost。 上传图片部分,通过asyncio包,实现了异步上传。 版权申明:本文为博主原创文章,转载请保留原文链接及作者。 来源

你不得不看——python精选库大全!建议收藏

早过忘川 提交于 2020-08-07 19:38:41
Python 为啥这么火,这么多人学,就是因为简单好学,功能强大,整个社区非常活跃,资料很多。而且这语言涉及了方方面面,比如自动化测试,运维,爬虫,数据分析,机器学习,金融领域,后端开发,云计算,游戏开发都有涉及。 万丈高楼平地起,Python这座大厦能够如此强大,就是拥有强大的成千上万的库的支持,无数牛逼的轮子在支持这座大厦, 今天我们来一起梳理一下,俯瞰整个 Python 宝库。 大概列了一下整个Python库的应用的方法面面,粗略算算就有20几个方向。左右两边分两个方向,左边负责进攻(主外),每一项单独拉出来都是精品,都是Python应用里面拳头产品;右边负责守(主内),都是涉及底层的配置,算是整个大厦的地基。 下面我们挑选每个领域的的精品库,展现给大家,看完之后,你一定会大叫,卧槽,这么多库我都没有见过~~ Python大厦的底层基建 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具。 pyenv:简单的 Python 版本管理工具。 Vex:可以在虚拟环境中执行命令。 virtualenv:创建独立 Python 环境的工具。 buildout:在隔离环境初始化后使用声明性配置管理。 包管理 管理包和依赖的工具。 pip:Python 包和依赖关系管理工具。 pip-tools:保证 Python 包依赖关系更新的一组工具。

Python精选库大全,建议收藏留用!

旧城冷巷雨未停 提交于 2020-08-06 15:00:43
Python为啥这么火,这么多人学,就是因为简单好学,功能强大,整个社区非常活跃,资料很多。而且这语言涉及了方方面面,比如自动化测试,运维,爬虫,数据分析,机器学习,金融领域,后端开发,云计算,游戏开发都有涉及。 万丈高楼平地起,Python这座大厦能够如此强大,就是拥有强大的成千上万的库的支持,无数牛逼的轮子在支持这座大厦, 今天我们来一起梳理一下,俯瞰整个Python宝库。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:1097524789 小编大概列了一下整个Python库的应用的方法面面,粗略算算就有20几个方向。左右两边分两个方向,左边负责进攻(主外),每一项单独拉出来都是精品,都是Python应用里面拳头产品;右边负责守(主内),都是涉及底层的配置,算是整个大厦的地基。 下面我们挑选每个领域的的精品库,展现给大家,看完之后,你一定会大叫,卧槽,这么多库我都没有见过~~ Python大厦的底层基建 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具。 pyenv:简单的 Python 版本管理工具。

Python3+WebSockets实现WebSocket通信

亡梦爱人 提交于 2020-08-06 14:10:37
一、说明 1.1 背景说明 前段时间同事说云平台通信使用了个websocket的东西,今天抽空来看一下具体是怎么个通信过程。 从形式上看,websocket是一个应用层协议,socket是数据链路层、网络层、传输层的抽像;从应用场合上看,websocket可以使用javascript实现,而socket不能用javascript实现(真不能吗?我不太确定);从实际效果上看,和一般的socket连接用起来没什么区别。 我们知道http是短连接的,反复建立和销毁连接比较耗费资源,另外http协议经常头部内容比主体内容还长也比较浪费资源;websocket可以认为就是一个内容使用载荷固定格式的socket长连接。 websocket基本协议格式如下,更多说明见 RFC 6455 : 1.2 环境说明 当前环境我使用Python3+WebSockets库,WebSockets直接使用pip安装即可: pip install websockets 二、代码实现 长连接是有状态的,所以一般在且只在最开始进行一次身份认证,而后通信过程不需要认证信息。我们这里实现一个简单的用户名密码认证过程。长连接更多内容可参考“ 长 连接 与短 连接 的安全差异讨论 ”。 另外,注意把代码中的ip改成自己的。 2.1 python服务端代码 import asyncio import websockets #

博客园上传markdown文件

别来无恙 提交于 2020-08-06 06:21:51
个人习惯用markdown写博客,然后同步到博客园,每次同步都比较麻烦。 于是通过metaweblog实现了,一步上传markdown文件的小工具。 工具地址: https://github.com/dongfanger/PyCnblog 关于工具如何使用请访问链接查看readme markdown图片存储设置 写markdown有一利器Typora,一般图片存储设置我会修改成这样。 打开文件>偏好设置,找到'图片插入' 修改为'复制到指定路径',规则设置为./${filename}/ 下面的3个选项全部勾选。 这样当复制粘贴图片到markdown时,就会在目录中新建一个同名文件夹,存储图片。 工具原理 本工具的基本原理是,调用metaweblog的相关api,把图片上传到服务器后,获取url替换本地图片地址,再上传文件到博客园,在博客园后台能看到新博客。 metaweblog是一个开放api,用于和远程blog交互,可以通过xmlrpc建立连接 server = xmlrpc.client.ServerProxy(blog_url) 这里用到了2个api:图片上传.metaWeblog.newMediaObject和博客上传.metaWeblog.newPost。 上传图片部分,通过asyncio包,实现了异步上传。 版权申明:本文为博主原创文章,转载请保留原文链接及作者。 来源

Python3+WebSockets实现WebSocket通信

醉酒当歌 提交于 2020-08-05 12:24:15
一、说明 1.1 背景说明 前段时间同事说云平台通信使用了个websocket的东西,今天抽空来看一下具体是怎么个通信过程。 从形式上看,websocket是一个应用层协议,socket是数据链路层、网络层、传输层的抽像;从应用场合上看,websocket可以使用javascript实现,而socket不能用javascript实现(真不能吗?我不太确定);从实际效果上看,和一般的socket连接用起来没什么区别。 我们知道http是短连接的,反复建立和销毁连接比较耗费资源,另外http协议经常头部内容比主体内容还长也比较浪费资源;websocket可以认为就是一个内容使用载荷固定格式的socket长连接。 websocket基本协议格式如下,更多说明见 RFC 6455 : 1.2 环境说明 当前环境我使用Python3+WebSockets库,WebSockets直接使用pip安装即可: pip install websockets 二、代码实现 长连接是有状态的,所以一般在且只在最开始进行一次身份认证,而后通信过程不需要认证信息。我们这里实现一个简单的用户名密码认证过程。长连接更多内容可参考“ 长 连接 与短 连接 的安全差异讨论 ”。 另外,注意把代码中的ip改成自己的。 2.1 python服务端代码 import asyncio import websockets #