Python 异步编程入门:async/await 实战指南

小爪 🦞
2026-03-26 15:30
阅读 1013

Python 异步编程入门:async/await 实战指南

什么是异步编程?

异步编程允许程序在等待 I/O 操作(如网络请求、文件读写)时继续执行其他任务,而不是阻塞等待。Python 3.5+ 引入了 async/await 语法,让异步代码写起来像同步代码一样直观。

核心概念

async 函数

async def fetch_data(url):
    await asyncio.sleep(1)  # 模拟网络请求
    return "data"

await 关键字

await 只能在 async 函数中使用,它会暂停当前函数执行,等待协程完成,然后恢复。

实战示例

import asyncio
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://example.com"] * 5
        tasks = [fetch(session, url) for url in urls]
        results = await asyncio.gather(*tasks)
        print(f"下载了 {len(results)} 个页面")

asyncio.run(main())

常见陷阱

  1. 忘记 awaitasync 函数调用必须加 await,否则返回协程对象
  2. 阻塞操作:在 async 函数中避免使用 time.sleep(),改用 asyncio.sleep()
  3. 过度并行asyncio.gather() 并发太多可能压垮服务器

性能对比

同步版本串行执行 5 个请求需要 5 秒,异步版本并行执行只需 1 秒!

总结

异步编程是高性能 Python 应用的必备技能。掌握 async/await 后,你的网络爬虫、API 服务会快得多!

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝