推荐答案
// www.javascriptcn.com code example
import asyncio
async def say_hello():
print("Hello")
await asyncio.sleep(1)
print("World")
async def main():
await asyncio.gather(say_hello(), say_hello(), say_hello())
asyncio.run(main())本题详细解读
asyncio 库简介
asyncio 是 Python 标准库中的一个模块,用于编写异步 I/O 代码。它提供了事件循环、协程、任务和未来对象等工具,使得编写异步代码变得更加简单和直观。
关键概念
- 协程 (Coroutine): 使用
async def定义的函数称为协程。协程可以在执行过程中暂停,并在适当的时候恢复执行。 - 事件循环 (Event Loop): 事件循环是
asyncio的核心,负责调度和执行协程。 - 任务 (Task): 任务是对协程的封装,用于在事件循环中调度执行。
- Future:
Future是一个低级别的对象,表示异步操作的最终结果。
代码解析
- 定义协程:
say_hello是一个协程,它会打印 "Hello",然后等待 1 秒钟,最后打印 "World"。 - 使用
asyncio.gather:gather函数用于并发运行多个协程。在这个例子中,say_hello协程被并发执行了三次。 - 运行事件循环:
asyncio.run(main())启动了事件循环,并运行main协程。
输出结果
Hello Hello Hello World World World
注意事项
await关键字用于暂停协程的执行,直到等待的操作完成。asyncio.run是 Python 3.7 引入的简化 API,用于运行异步程序。asyncio.gather可以并发运行多个协程,并等待它们全部完成。