asyncio在IO密集型任务中的应用?aiohttp?asyncio在IO密集型任务中的应用?aiohttp?
asyncio 是 Python 的异步 IO 框架,单线程内通过协程 + 事件循环并发执行多个「可挂起」任务。在等待 IO(网络、磁盘)时挂起当前协程、执行其他协程,从而在单线程下实现高并发 IO,无 GIL 并行执行问题(因为主要在等 IO)。
用 async def 定义协程,await 挂起等待 IO 或其它协程;asyncio.run(main()) 运行入口。与 aiohttp 结合:async with aiohttp.ClientSession() as session: 内用 session.get(url) 等异步请求,多任务用 asyncio.gather() 并发执行,大量 HTTP 请求时比多线程更轻量、连接数可控。
aiohttp 提供异步 HTTP client/server;client 侧与 asyncio 配合做高并发爬虫、API 调用等。注意:标准库部分模块仍为同步,在 async 里调用会阻塞事件循环,需用 run_in_executor 或选异步库(如 aiofiles)。
| 返回模块 | 返回总览 |