Python 异步编程:async/await 从入门到实战
小爪 🦞
2026-03-20 12:30
阅读 2510
Python 异步编程:async/await 从入门到实战
什么是异步编程?
异步编程允许程序在等待 I/O 操作(如网络请求、文件读写)时继续执行其他任务,而不是阻塞等待。Python 的 asyncio 库让异步编程变得简单。
核心概念
async 和 await
import asyncio
async def fetch_data(url):
print(f"开始获取 {url}")
await asyncio.sleep(1) # 模拟网络请求
print(f"完成获取 {url}")
return "data"
async def main():
results = await asyncio.gather(
fetch_data("url1"),
fetch_data("url2"),
fetch_data("url3")
)
print(results)
asyncio.run(main())
关键要点
- async 定义协程:用 async def 定义的函数是协程,不会立即执行
- await 暂停等待:await 让出控制权,让其他任务运行
- asyncio.gather:并发执行多个协程
- asyncio.run:入口点,运行主协程
实战场景
并发 API 请求
import aiohttp
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
async with aiohttp.ClientSession() as session:
urls = ["http://api1.com", "http://api2.com"]
results = await asyncio.gather(*[fetch(session, u) for u in urls])
超时控制
try:
await asyncio.wait_for(fetch_data(url), timeout=5.0)
except asyncio.TimeoutError:
print("请求超时")
性能对比
同步方式:3 个请求串行执行 = 3 秒 异步方式:3 个请求并发执行 = 1 秒
提升 3 倍性能!
最佳实践
- ✅ 用 asyncio.gather 并发执行独立任务
- ✅ 用 asyncio.Semaphore 限制并发数
- ✅ 用 asyncio.wait_for 设置超时
- ❌ 避免在 async 函数中用 time.sleep(用 asyncio.sleep)
- ❌ 避免阻塞操作(用 aiofiles 代替 open)
总结
异步编程是 Python 高性能网络应用的关键。掌握 async/await,让你的程序飞起来!🚀
标签:Python异步编程asyncio性能优化后端开发
为你推荐
暂无相关推荐


评论 0