PTA——L2-041 插松枝:从题意解析到代码实现的完整模拟指南
2026/6/19 15:21:08
学完理论必须落地实战。本文提供可直接上线的异步爬虫、异步文件读写案例,对比同步、多线程、异步性能差距,适合爬虫、后端接口、批量IO场景。
requests是同步阻塞,高并发爬虫必须用 aiohttp 异步请求。
import aiohttp import asyncio async def fetch(session, url): async with session.get(url) as resp: return await resp.text() async def main(): urls = ["https://www.baidu.com"]*10 async with aiohttp.ClientSession() as session: tasks = [fetch(session,url) for url in urls] results = await asyncio.gather(*tasks) print(len(results)) asyncio.run(main())普通open是阻塞IO,海量文件读写用异步极致提速。
import aiofiles import asyncio async def write_file(): async with aiofiles.open("async.txt","w",encoding="utf-8") as f: await f.write("异步文件写入内容") asyncio.run(write_file())计算密集 →多进程
普通IO、少量并发 →多线程
海量IO、高并发爬虫/接口 →异步协程