爬虫之 单线程+多任务异步协程

<h3>单线程+多任务异步协程</h3>

- 意义:提升爬取数据的效率- 实现异步爬虫的方式 - 多线程/多进程(不建议)
- 池(适当)
- 单线程+多任务异步协程(推荐)
- 概念
- 协程:协程对象。可以使用async关键字修饰一个函数的定义(特殊的函数),当该特殊的函数被调用后,就可以返回一个协程对象。当函数调用后,函数内部的实现语句不会被立即执行。
- 协程 == 特殊函数
- 任务对象:
- 本质上就是对协程对象进一步封装。
- 任务对象 == 特殊函数
- 给任务对象绑定一个回调
- add_done_callback(callback)

- 事件循环(EventLoop):无限的循环对象
- 我们必须将任务对象注册到事件循环对象中,然后开启事件循环对象。
- 事件循环对象在执行任务对象的时候是基于异步

- await async

- 注意事项:
- 保证特殊函数内部不可以出现不支持异步模块对应的代码
- 在特殊函数内部遇到阻塞操作必须使用await关键字对其进行手动挂起
- 如果想要将多个任务对象注册到事件循环中,必须将多个任务对象封装到一个列表中,然后将列表注册(必须使用wait方法将列表中的任务对象进行挂起)到事件循环中


- aiohttp模块:是一个支持异步的网络请求模块
- pip install aiohttp

猜你喜欢

转载自www.cnblogs.com/lulin9501/p/11308932.html