协程:单线程,挂起切换。 模块:协程模块:asyncio 异步请求模块:aiohttp 总括: 协程是通过事件循环,对将协程对象转化的事件进行挂起,实现切换和加速, 针对的是IO密集型的任务。 创建协程: 定义协程功能: 通过async def定义协程功能(函数),同时要利用await关键字对IO任务进行挂起, 返回协程对象(coroutine)。 将协程转化为事件(task): 事件记录了协程的状态。 asyncio.ensure_future(coroutine) # task = asyncio.ensure_future(coroutine) 建立事件循环(event_loop): asyncio.get_event_loop() # event_loop = asyncio.get_event_loop() 将事件注册到循环中: tasks为事件列表。 event_loop.event_loop.run_until_complete(asyncio.wait(tasks)) 获取事件(协程)返回值: task.result()方法。 一定要将协程对象(coroutine)封装成事件对象(task),要不返回值就丢了。 异步请求模块使用: 建立客户端会话: session = aiohttp.ClientSession() 会话发送请求: response = await session.get(self.url, headers=self.headers, params=params) #这步通常挂起。其他与requests类似。 关闭会话: await session.close() #必须关,不关报错。通常也挂起。
python异步协程网络爬虫基础
最新推荐文章于 2024-01-23 20:08:43 发布
文章介绍了Python中使用asyncio模块创建和管理协程,通过asyncdef定义协程功能,并利用await关键字处理IO密集型任务的挂起。aiohttp模块用于异步请求,建立客户端会话并发送请求,最后关闭会话。协程和异步请求能有效提高程序执行效率。
摘要由CSDN通过智能技术生成