zoukankan      html  css  js  c++  java
  • 高性能异步爬虫

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

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

        coroutine:中文翻译叫协程,在 Python 中常指代为协程对象类型,我们可以将协程对象注册到事件循环中,
            它会被事件循环调用。我们可以使用 async 关键字来定义一个方法,这个方法在调用时不会立即被执行,
            而是返回一个协程对象。
    
        task:任务,它是对协程对象的进一步封装,包含了任务的各个状态。
    
        future:代表将来执行或还没有执行的任务,实际上和 task 没有本质区别。
    
        async:定义一个协程。
    
        await:用来挂起阻塞方法的执行。
  • 相关阅读:
    [转]我们应该做什么样的研究
    [转]面向服务架构(SOA)和企业服务总线(ESB)
    [转]程序员应知——团队精神
    vs2010 调试快捷键
    asp.net 获取ip的6种方法
    解决了防止用户重复登陆和session超时
    IE 10 也能随网站应变,图标决定一切!
    Sony VAIO Duo 11 游戏性能测试
    翻出Windows 8 当中的游戏管理器
    Office 2013预览版已到期,需要付费才可正常使用
  • 原文地址:https://www.cnblogs.com/gerenboke/p/13389105.html
Copyright © 2011-2022 走看看