Python 异步: 异步推导式(18)

简介: Python 异步: 异步推导式(18)

动动发财的小手,点个赞吧!

当我们想到“pythonic”时,理解,如列表和字典理解是 Python 的一个特性。

这是我们执行循环的一种方式,与许多其他语言不同。

Asyncio 允许我们使用异步推导式。

我们可以通过“async for”表达式使用异步推导式来遍历异步生成器和异步迭代器。

1. 什么是异步推导式

异步推导式是经典推导式的异步版本。Asyncio 支持两种类型的异步推导式,它们是“async for”推导式和“await”推导式。

在我们看每之前,让我们首先回顾一下经典的推导式。

2. 推导式

推导式允许以简洁的方式创建列表、字典和集合等数据集合。列表推导式允许从新列表表达式中的 for 表达式创建列表。

...
# create a list using a list comprehension
result = [a*2 for a in range(100)]

还支持推导式来创建字典和集合。

...
# create a dict using a comprehension
result = {a:i for a,i in zip(['a','b','c'],range(3))}
# create a set using a comprehension
result = {a for a in [1, 2, 3, 2, 3, 1, 5, 4]}

3. 异步推导式

异步推导式允许使用带有异步可迭代对象的“async for”表达式来创建列表、集合或字典。

...
# async list comprehension with an async iterator
result = [a async for a in aiterable]

这将根据需要创建和安排协程或任务,并将其结果放入列表中。

回想一下,“async for”表达式只能在协程和任务中使用。

另外,回想一下异步迭代器是一个产生可等待对象的迭代器。

“async for”表达式允许调用者遍历等待对象的异步迭代器并从每个对象中检索结果。

在内部,async for 循环将根据需要自动解析或等待每个可等待的调度协程。

异步生成器自动实现异步迭代器的方法,也可用于异步推导式。

...
# async list comprehension with an async generator
result = [a async for a in agenerator]

4. Await 推导式

“等待”表达式也可以在列表、集合或字典理解中使用,称为等待推导式。

与异步推导式一样,它只能在异步协程或任务中使用。

这允许通过挂起和等待一系列可等待对象来创建数据结构,如列表。

...
# await list compression with a collection of awaitables
results = [await a for a in awaitables]

这将通过依次等待每个可等待对象来创建结果列表。

当前协程将被挂起以顺序执行可等待对象,这与使用 asyncio.gather() 并发执行它们不同,而且可能更慢。

相关文章
|
4天前
|
调度 数据库 Python
【专栏】异步IO在处理IO密集型任务中的高效性
【4月更文挑战第27天】本文介绍了Python并发编程和异步IO,包括并发的基本概念(多线程、多进程、协程),线程与进程的实现(threading和multiprocessing模块),协程的使用(asyncio模块),以及异步IO的原理和优势。强调了异步IO在处理IO密集型任务中的高效性,指出应根据任务类型选择合适的并发技术。
|
4天前
|
BI Python
深入浅出:讲解Python中的列表推导式
深入浅出:讲解Python中的列表推导式
|
4天前
|
API UED Python
使用Python进行异步HTTP请求的实践指南
使用Python进行异步HTTP请求的实践指南
20 4
|
4天前
|
存储 Python
Python进阶语法之推导式
本章是对自己学完基础语法后,学习python进阶语法推导式过程中,自己的一些理解和看法,因为自己从刚开始第一次看看不懂,到学习一段时间后,通过积累再次看这里的知识点发现自己有了新的理解,这次将这部分知识学完了,剩下就是通过练习来达到熟练了.本章的推导式,包含列表推导式,字典推导式,集合与元组推导式这四种.主要是对python进阶语法推导式,的练习与理解,同时也提高了自己对代码的简化和运行的能力的提高,也是在这次学习中,我发现学习代码更多需要的是对基础和知识的积累,当眼界与思维突破瓶颈,看之前难以理解的事物发现变的容易去使用和理解了.
|
4天前
|
并行计算 数据处理 开发者
Python并发编程:解析异步IO与多线程
本文探讨了Python中的并发编程技术,着重比较了异步IO和多线程两种常见的并发模型。通过详细分析它们的特点、优劣势以及适用场景,帮助读者更好地理解并选择适合自己项目需求的并发编程方式。
|
4天前
|
大数据 Python
python中的推导式、生成器(二)
python中的推导式、生成器(二)
|
4天前
|
索引 Python 容器
python中的推导式、生成器(一)
python中的推导式、生成器(一)
|
4天前
|
人工智能 算法 调度
uvloop,一个强大的 Python 异步IO编程库!
uvloop,一个强大的 Python 异步IO编程库!
37 2
|
4天前
|
API 调度 开发者
Python中的并发编程:使用asyncio库实现异步IO
传统的Python编程模式中,使用多线程或多进程实现并发操作可能存在性能瓶颈和复杂性问题。而随着Python 3.5引入的asyncio库,开发者可以利用异步IO来更高效地处理并发任务。本文将介绍如何利用asyncio库实现异步IO,提升Python程序的并发性能。
|
4天前
|
存储 数据挖掘 Serverless
Python推导式:简洁高效的数据结构构建与应用
【4月更文挑战第4天】Python的推导式是其简洁语法的体现,包括列表、字典、集合和生成器推导式。本文介绍了各种推导式的使用,例如通过列表推导式生成平方数列表,字典推导式创建数字与平方的映射,集合推导式得到奇数集合,以及生成器推导式实现懒加载。此外,还讲解了嵌套推导式、条件表达式、性能考虑、数据过滤和转换、与函数结合、灵活运用和错误处理等。推导式在文件处理、多层嵌套数据结构、字典操作、数据分析、异步编程等场景中都有应用,但过度使用可能降低可读性,需根据情况权衡。
55 4