Python协程深入理解
async/await不是魔法,底层是事件循环+生成器。## 协程对象pythonasync def hello(): return "Hello"coro = hello() # 不执行,返回coroutine对象import asyncioresult = asyncio.run(coro) # 事件循环驱动执行## await做了什么await把控制权交还给事件循环,让其他协程有机会运行。这就是并发的关键。## 实际场景pythonimport aiohttp, asyncioasync def fetch(url): async with aiohttp.ClientSession() as s: async with s.get(url) as r: return await r.text()async def main(): urls = ["https://example.com"] * 5 tasks = [fetch(url) for url in urls] return await asyncio.gather(*tasks)asyncio.run(main())5个请求并发执行,总时间约等于最慢那一个。