博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用 Python 开始异步编程?
阅读量:4121 次
发布时间:2019-05-25

本文共 1058 字,大约阅读时间需要 3 分钟。

其实早在 Python3.4 的时候就有协程,当时的协程是通过 @asyncio.coroutine 和 yeild from 实现的。

然后到了 Python3.5 引入了 async/await 语法糖,一直到现在 Python3.8 都是用这种形式来表示协程。这种是目前应用范围最广的,比之前的代码舒服了不少,不再使用装饰器的形式了。

然后就到了 Python3.7Python3.8,协程发生了很多细小的变化,但是最大的一个变化就是,启动协程的方法变简单了,一句就可以搞定,不用再像上面那样,创建循环然后再仍到事件循环去执行。使用 asyncio.run 这个顶级 API 就可以了。

asyncio 是异步教程中必须学习的基础模块。协程的好处就是单线程即可轻松实现百万级的并发,同时速度上也得到大大提升,在爬虫领域和 Web 开发领域等都有很大的用途,但是,这些模块都是要配合协程模块 asyncio 使用的。

asyncio 的组成部分:

根据目前的官方文档,总的来说分为了两部分:高层级 API 和低层级 API

高层级 API

  • 协程对象和 Tasks 对象

  • 数据流

  • 同步源语

  • 子进程

  • 队列

  • 异常

低层级 API

  • 事件循环

  • Futures 对象

  • 传输和协议

  • 策略

  • 平台支持

上面列出了这么多的项目我们怎么去选择自己所需要的呢,对于刚入门的新手或者只是写一个自己用的程序一般都只会用到高级 API 的部分,这部分就属于开箱即用的那种。

对于高级用户比如框架开发者,往往可以需要去适应各种需要,需要重新改写一些内部的结构,这个时候就需要用到低层级的 API。但这两个层级主要是方便 API 的查看,本场 Chat 我将带着大家学习 asyncio 的一些使用方法,为后面的异步爬虫的编写做一个铺垫。

通过本场您将学到:

  1. 什么是 asyncio

  2. asyncio 中提到的事件循环、Task、Future、awaitable 都是什么

  3. 如何去使用 asyncio 的一些方法

  4. 学习异步编程风格

面向对象:本教程需要有一定 Python 基础的,喜欢异步编程和想学异步编程的同学。

本场 Chat 作者:陈祥安

陈祥安,高级爬虫工程师,有着丰富的爬虫工作经验,从 C# 语言转入到Python 语言,擅长各种爬虫技术,熟悉大规模爬虫开发,热爱并喜欢钻研 Python。最近沉迷于异步编程中。公众号:Python学习开发

扫码订阅本场 Chat 

640?wx_fmt=jpeg

点击阅读原文,订阅本场 Chat 参与本周四的线上交流!

转载地址:http://iyspi.baihongyu.com/

你可能感兴趣的文章
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>
springcloud 连续请求 500
查看>>
vue复用新增和编辑表单
查看>>
Ubuntu 16.04 apt-get更换为国内阿里云源
查看>>
laravel部署到宝塔步骤
查看>>
小程序获取access_token
查看>>