4. 高性能爬虫概念1
高性能异步爬虫
目的: 在爬虫中使用异步实现高性能的数据爬取
普通请求(单线程串行方式执行)
循环请求会堵塞后一个请求
1 | urls = ['http://xxxx.rar','http://xxxx.rar','http://xxxx.rar'] |
异步
一个进程有个多个线程
多线程,多进程(不推荐)
- 好处: 可以为相关堵塞的操作单独开启线程/进程,阻塞操作就可以异步执行
- 弊端: 无法无限的开启多线程/多进程
线程池/进程池(适当使用)
- 好处: 可以降低系统对进程/线程创建和销毁的频率,从而很好降低系统开销
- 弊端: 池中进程/线程数量也有上限
单线程+异步协程(推荐):
python3.4以上才有的- event_loop: 事件循环
- 相当于一个无限循环,可以把一些函数注册到这个循环上,当满足某种条件,函数就会被循环执行
- coroutine: 协程对象
- 可以将携程对象注册到事件循环中,他会被事件循环调用,可以使用
async关键字来定义一个方法,这个方法在调用时不会被立即执行,而是返回一个协程对象
- 可以将携程对象注册到事件循环中,他会被事件循环调用,可以使用
- task: 任务
- 它是对协程对象的进一步封装,包含了任务的各个状态
- future:
- 代表将来执行或还没有执行的任务,实际上和task没有本质区别
- async:
- 定义一个协程
6: await: - 用来挂起阻塞方法的执行
- 定义一个协程
- event_loop: 事件循环
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梧桐的学习日记!




