码迷,mamicode.com
首页 > 其他好文 > 详细

高性能异步爬虫

时间:2020-07-28 09:59:36      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:操作   就是   pre   对象类型   过程   时间   程序   开启   次数   

高性能异步爬虫
目的:在爬虫中使用异步实现高性能的数据爬取操作。

异步爬虫的方式:
- 多线程、多进程(不建议):
- 好处:可以为相关阻塞的阻塞单独开启线程或者进程,阻塞操作就可以异步执行。
- 弊端:无法无限制的开启多线程或者多进程。
- 线程池、进程池(适当使用):
- 好处:可以降系统对进程或者线程创建和销毁的一个频率,从而很好的降低系统的开销。
- 弊端:池中线程或者进程的数量是有限的。
- 单线程+异步协程(推荐):
event_loop:事件循环,相当于一个无限循环,我们可以把一些函数注册到这个事件循环上,当满足某些条件的时候,
函数就会被循环执行。程序是按照设定的顺序从头执行到尾,运行的次数也是完全按照设定。
当在编写异步程序时,必然其中有部分程序的运行耗时是比较久的,需要先让出当前程序的控制权,
让其在背后运行,让另一部分的程序先运行起来。当背后运行的程序完成后,
也需要及时通知主程序已经完成任务可以进行下一步操作,但这个过程所需的时间是不确定的,
需要主程序不断的监听状态,一旦收到了任务完成的消息,就开始进行下一步。loop就是这个持续不断的监视器。

    coroutine:中文翻译叫协程,在 Python 中常指代为协程对象类型,我们可以将协程对象注册到事件循环中,
        它会被事件循环调用。我们可以使用 async 关键字来定义一个方法,这个方法在调用时不会立即被执行,
        而是返回一个协程对象。

    task:任务,它是对协程对象的进一步封装,包含了任务的各个状态。

    future:代表将来执行或还没有执行的任务,实际上和 task 没有本质区别。

    async:定义一个协程。

    await:用来挂起阻塞方法的执行。

高性能异步爬虫

标签:操作   就是   pre   对象类型   过程   时间   程序   开启   次数   

原文地址:https://www.cnblogs.com/gerenboke/p/13389105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!