编辑
2025-06-26
Python
00

目录

asyncio
事件循环机制
协同多个任务
案例

asyncio

asyncio 是 Python 中用于编写异步代码的标准库,它的核心是事件循环机制。事件循环负责调度和执行异步任务,使得多个任务可以在单线程中协同工作.

日常中用到的场景为,批量获取某手机的多个应用列表里面具体应用的信息时,需要异步处理,不然逐个获取遍历太慢了(异步2秒内,逐个为60秒可能不止)

事件循环机制

1、事件循环:

事件循环是一个运行在单线程中的循环,它负责管理和调度异步任务。 在事件循环中,任务是以协程的形式存在,协程可以在执行过程中暂停(使用 await),并在合适的时机恢复执行。

2、任务调度:

事件循环通过调度器来管理任务的执行顺序。 当一个协程遇到 await 时,它会暂停执行,事件循环可以切换到其他任务。 事件循环会不断检查任务的状态,并在任务准备好继续执行时恢复它。

3、I/O 操作:

异步 I/O 操作是事件循环的一个重要部分。事件循环可以在等待 I/O 操作完成时执行其他任务。 这使得 asyncio 非常适合处理网络请求、文件读写等 I/O 密集型任务。

协同多个任务

1、创建任务:

使用 asyncio.create_task() 或 loop.create_task() 可以将协程包装成任务,并提交给事件循环。 任务是事件循环调度的基本单位。

2、并发执行:

asyncio.gather() 可以用于并发执行多个协程。它会等待所有协程完成,并返回结果。 asyncio.wait() 可以用于等待多个任务完成,提供更细粒度的控制。

案例

python
import asyncio async def task(name, delay): print(f"Task {name} started") await asyncio.sleep(delay) print(f"Task {name} finished") return name async def main(): # 创建多个任务 tasks = [ asyncio.create_task(task("A", 2)), asyncio.create_task(task("B", 1)), asyncio.create_task(task("C", 3)) ] # 并发执行任务 results = await asyncio.gather(*tasks) print(f"Results: {results}") # 运行事件循环 asyncio.run(main()) # Task A started # Task B started # Task C started # Task B finished # Task A finished # Task C finished Results: ['A', 'B', 'C']

本文作者:lixf6

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!