Python异步: 什么是异步? (2)

news/2023/6/9 19:44:48

广义上,asyncio 是指使用协程在 Python 中实现异步编程的能力。

具体来说,它指的是两个要素:

  1. 在 Python 3.4 中将“asyncio”模块添加到 Python 标准库中。
  2. 在 Python 3.5 中向 Python 语言添加了 async/await 表达式。

模块和语言的变化共同促进了支持基于协程的并发、非阻塞 I/O 和异步编程的 Python 程序的开发。

让我们仔细看看 asyncio 的这两个方面,从语言的变化开始。

1. 异步支持

Python 语言已更改为通过添加表达式和类型来适应 asyncio。更具体地说,它被更改为支持协程作为一流的概念。反过来,协程是 asyncio 程序中使用的并发单元。协程是一个可以挂起和恢复的函数。

协程可以通过“async def”表达式定义。它可以接受参数并返回一个值,就像函数一样。

# define a coroutine
async def custom_coro():
 # ...

调用协程函数会创建一个协程对象,这是一个新的类。它不执行协程函数。

...
# create a coroutine object
coro = custom_coro()

协程可以通过 await 表达式执行另一个协程。这会暂停调用者并安排目标执行。

...
# suspend and schedule the target
await custom_coro()

异步迭代器是产生可等待对象的迭代器。可以使用“async for”表达式遍历异步迭代器。

...
# traverse an asynchronous iterator
async for item in async_iterator:
 print(item)

这不会并行执行 for 循环。相反,执行 for 循环的调用协程将挂起并在内部等待迭代器产生的每个可等待对象。

异步上下文管理器是可以等待进入和退出方法的上下文管理器。“async with”表达式用于创建和使用异步上下文管理器。调用协程将在进入上下文管理器块之前挂起并等待上下文管理器,在离开上下文管理器块时也是如此。

这些是为支持协程而对 Python 语言进行的主要更改的总结。

2. 异步模块

“asyncio”模块提供函数和对象,用于使用异步编程范例开发基于协程的程序。具体来说,它支持带有子进程(用于执行命令)和流(用于 TCP 套接字编程)的非阻塞 I/O。

asyncio 模块的核心是事件循环。这是运行基于协程的程序并实现协程之间协作多任务处理的机制。该模块同时提供高级和低级 API。高级 API 是为我们 Python 应用程序开发人员准备的。在大多数情况下,低级 API 适用于框架开发人员,而不是我们。大多数用例都可以使用高级 API 来满足,这些 API 提供实用程序来处理协程、流、同步原语、子进程和队列,以便在协程之间共享数据。较低级别的 API 为高级 API 提供了基础,包括事件循环的内部结构、传输协议、策略等。

现在我们大致了解了 asyncio 是什么,它用于异步编程。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4554797.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

什么是永续合约?

什么是永续合约? #Be_a_Trader! MCS永续合约合约商品是以BTC/USDT作为交易对的反向永续合约。 永续合约是被称为”数字货币期货“的金融衍生商品。永续合约兼有现货交易和期货交易的特点,但和现货、期货交易也有一定区别。 无到期日、交割日 与需要在…

EOS.IO 将迎来史上最复杂硬分叉升级,硬分叉的流行意味着什么?

1.8.0是EOS.IO开源以来最重要的版本,将奠定EOS.IO今后通过硬分叉升级快速迭代的基调,也会让整个区块链行业重新审视硬分叉升级的重要性。 (孤矢,EOS 原力创始人) 2019 年年初,一些媒体开始报道 EOS.IO 代码…

4.Java的基础语法

小伙伴们,本篇内容让我们一起来总结学习Java的基础语法吧!😉 文章目录一、注释二、关键字三、字面量(也被叫做:常量/字面值常量)四、一些特殊字面量的书写五、变量(1)变量的定义格式:(2)输出打印变量:(3)变量的基本用法:(4)变量的注意事项:(5)变量的练习总结一、注释…

360oauth token是什么意思_Coin还是Token?背后的逻辑是什么?

下文内容同视频~https://www.zhihu.com/video/1167101256702353408我们上次的节目说过比特币其实并不是货币,而是资产,虽然广义上依然是“钱”的概念,但大家有没有注意到,其实无论是币圈还是链圈,我们都极少听见有人把…

什么是生命周期终止(EOL)?

End Of Life(EOL) is used in computing especially in hardware and software to define the end of the production. Especially commercial manufacturers use EOL in order to finalize the production with old hardware and software and after some time stopping the

EOS 数据库与持久化 API —— 架构

在 EOS 中,智能合约执行完毕后,所占用的内存会释放。程序中的所有变量都会丢失。如果智能合约里要持久地记录信息,比如游戏智能合约要记录每位用户游戏记录,本次合约执行完毕后数据不能丢失,就需要将数据存储到 EOS 数…

机器学习笔记之高斯分布(一)——使用极大似然估计计算最优参数

机器学习笔记之高斯分布——使用极大似然估计计算最优参数目录高斯分布介绍一维正态分布多维正态分布回顾:数据集合与概率模型使用极大似然估计计算高斯分布最优参数目录 本节将介绍一个在统计机器学习中占据重要地位的分布——高斯分布。 高斯分布介绍 高斯分布…

多元线性回归,参数估计,模拟,最小二乘法,极大似然估计,matlab

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、多元线性回归二、最小二乘法,极大似然估计三、使用步骤1.产生数据(和上一篇文章代码一样)2.方法3.完整代码总结前言 多元…