Python Async 编程快速入门 | 超简明异步协程指南
async 是 Python 用于 异步编程(asynchronous programming) 的语法关键字。
它主要用于 提升程序执行效率,尤其在执行 I/O 密集型任务(如网络请求、数据库查询、文件读写)时,可以在等待的同时做别的事。
一、为什么要用 Async?(异步的意义)
在编写程序时,我们经常遇到这样的情况:
• 向服务器请求数据,需要等待
• 访问数据库,速度慢
• 下载文件或爬虫抓取,等待时间长
传统的同步程序会 阻塞当前线程,比如这样:
def get_data():time.sleep(3)print("数据到手!")
👉 那么在这3秒内,程序 啥也干不了。
异步编程就像是:先下单,等快递的过程中干点别的事!
一句话理解
async def func(): ...
表示:这个函数是“异步函数”,运行它不会立刻执行,而是返回一个协程对象(coroutine),需要 await 来真正运行它。
二、核心语法:只需记住两个关键词
1. async def 定义异步函数
async def say_hello():...
- 这不是普通函数,而是 协程函数(Coroutine Function)
- 调用它不会立刻执行,而是返回一个协程对象
2. await 调用其他协程
await say_hello()
- 只能在 async 函数中使用 await
- 让出控制权,等待这个任务完成再继续
三、快速示例:Hello Asyncio
import asyncioasync def say_hello():print("Hello")await asyncio.sleep(1) # 模拟等待1秒print("World")# 启动 async 函数
asyncio.run(say_hello())
输出:
Hello
(等待1秒)
World
你看,程序并没有卡死,而是 在等待中还能处理其他异步任务!
四、多任务同时运行
import asyncioasync def task(name, delay):print(f"{name} 开始")await asyncio.sleep(delay)print(f"{name} 结束")async def main():await asyncio.gather(task("任务A", 2),task("任务B", 1))asyncio.run(main())
输出顺序:
任务A 开始
任务B 开始
任务B 结束
任务A 结束
✔️ 多个任务并发运行了,时间效率提高了!
五、应用场景有哪些?
- 🔁 爬虫:多个网页同时抓取
- 🧠 大模型:异步调用 API
- 🗂️ 文件处理:边下载边处理
- 💬 Chatbot:用户对话响应不卡顿
- 🌐 Web 框架:FastAPI 就是 async 驱动
六、常见搭配
- async def:定义一个异步函数
- await:让你可以等待另一个协程
- asyncio.run(…):是启动协程的入口
七、延伸阅读 & 推荐工具
- 官方文档:https://docs.python.org/zh-cn/3/library/asyncio.html
- 三方库支持:
• aiohttp:异步 HTTP 客户端
• FastAPI:基于 async 的高性能 Web 框架
• aiomysql、aioredis:异步数据库驱动
异步编程一开始看起来有点拗口,但只要掌握 async 和 await,很多 I/O 密集型任务就能大大提速!
如果你有任何问题,欢迎评论区交流 👇👇👇