在Python中,asyncio
模块提供了一种基于协程的异步编程框架,用于处理异步 I/O 操作。以下是使用 asyncio
进行异步编程的一般步骤:
定义异步函数: 使用
async def
关键字定义异步函数,函数内部可以包含await
表达式,用于等待异步操作完成。创建事件循环: 使用
asyncio.get_event_loop()
获取事件循环对象,或者使用asyncio.new_event_loop()
创建一个新的事件循环。调度异步任务: 将异步函数包装成任务对象,并将任务添加到事件循环中执行。
运行事件循环: 使用事件循环的
run_until_complete()
或run_forever()
方法来运行异步任务。
下面是一个简单的例子,演示如何使用 asyncio
进行异步编程:
import asyncio
async def async_example():
print("Start async_example")
await asyncio.sleep(2) # 模拟异步操作,这里暂停 2 秒
print("End async_example")
async def main():
task1 = asyncio.create_task(async_example())
task2 = asyncio.create_task(async_example())
print("Before await")
await task1 # 等待 task1 完成
print("After await for task1")
await task2 # 等待 task2 完成
print("After await for task2")
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
在这个例子中,async_example
函数模拟了一个耗时的异步操作。main
函数创建了两个异步任务 (task1
和 task2
),并使用 await
等待它们的完成。
最后,通过调用事件循环的 run_until_complete()
方法来执行 main
函数。在实际应用中,可能会有更复杂的异步操作和更多的任务,但这个例子提供了一个基本的框架。
请注意,Python 3.7 之后,可以使用 asyncio.run(main())
代替手动获取事件循环和运行的步骤。