当前位置: 首页 > 工具软件 > asyncio > 使用案例 >

Asyncio框架理解

桂飞翼
2023-12-01

一、概述

    Asyncio 是用来编写并发代码的库,使用 async/await 语法。asyncio被用作多个提供高性能 Python异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。asyncio往往是构建IO密集型和高层级结构化网络代码的最佳选择。

二、概念梳理

    在理解框架前,准确理解各个概念很重要,这里将官方文档中的介绍加以整理。

  •  协程:通过 async/await 语法进行声明。内部可以灵活控制执行分支,较线程开销更小。
  •  可等待对象如果一个对象可以在 await 语句中使用,那么它就是可等待对象。有三种主要  类型:协程, Task 和 Future涉及IO操作的对象一般是可等待对象,这种对象会适时的释放CPU,以便其他代码有执行机会
  •  Task:任务是被用来设置日程以便并发执行协程。当协程通过 asyncio.create_task() 等函数被打包为一个任务,该协程将自动排入日程准备立即运行。
  •  Future:一种特殊的低层级可等待对象,表示一个异步操作的最终结果。
  •  Queue:被用于多个异步Task对象的运行调度,实现连接池以及发布/订阅。
  •  同步:用于Task对象集,类似线程的同步,主要用于资源访问控制。
  •  事件循环:事件循环是asyncio应用的核心。事件循环会运行异步任务和回调,执行网络IO操作,以及运行子进程。开发者通常应当使用高层级的 asyncio 函数,例如 asyncio.run(),应当很少有必要引用循环对象或调用其方法。
 类似资料: