asyncio编写异步代码示例
使用 asyncio
编写异步代码可以帮助你在 Python 中处理并发任务。以下是一个基本的示例,展示了如何使用 asyncio
创建和运行异步任务。
基本结构
首先,你需要导入 asyncio
模块,并定义异步函数(使用 async def
语法)。然后,利用 await
关键字来调用其他异步函数或等待某个任务完成。
示例代码
import asyncio
import random
# 定义一个异步函数
async def async_task(name):
print(f"{name} 开始工作...")
# 模拟异步操作,比如网络请求或 I/O 操作
await asyncio.sleep(random.uniform(1, 3)) # 随机等待 1 到 3 秒
print(f"{name} 工作完成!")
# 主函数
async def main():
# 创建多个异步任务
tasks = []
for i in range(5):
task_name = f"任务 {i + 1}"
tasks.append(async_task(task_name))
# 使用 asyncio.gather 等待所有任务完成
await asyncio.gather(*tasks)
# 运行主函数
if __name__ == "__main__":
asyncio.run(main())
代码解释
- 异步函数:
async_task
是一个异步函数,模拟了一个耗时的操作(使用await asyncio.sleep()
)。 - 主函数:
main
函数创建了多个异步任务,并将它们收集到一个列表中。 - 并发执行: 使用
asyncio.gather
来并发执行所有任务,直到所有任务完成。 - 运行:
asyncio.run(main())
是用来启动事件循环并执行主函数。
注意事项
- 确保在使用
await
时调用的是异步函数。 - 使用
asyncio.sleep()
来模拟等待时间,而不是使用普通的time.sleep()
,因为后者会阻塞事件循环。 - 可以根据实际需要调整并发任务的数量和类型,以优化性能。
这个示例展示了如何使用 asyncio
来实现简单的并发处理,你可以根据实际需求进一步扩展和修改代码。