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

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

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

        coroutine:中文翻译叫协程,在 Python 中常指代为协程对象类型,我们可以将协程对象注册到事件循环中,
            它会被事件循环调用。我们可以使用 async 关键字来定义一个方法,这个方法在调用时不会立即被执行,
            而是返回一个协程对象。
    
        task:任务,它是对协程对象的进一步封装,包含了任务的各个状态。
    
        future:代表将来执行或还没有执行的任务,实际上和 task 没有本质区别。
    
        async:定义一个协程。
    
        await:用来挂起阻塞方法的执行。
  • 相关阅读:
    大三寒假第十四天
    大三寒假第十一天
    大三寒假第十二天
    SparkSQL 通过jdbc连接数据库/通过hive读写数据
    bootstrapfileinput上传控件
    信用卡评分模型(五)
    “元宇宙”是什么?它到底有哪些大招?
    如何学习游戏引擎?
    Web开发的26项基本概念和技术总结
    游戏引擎开发和游戏客户端开发有什么区别?
  • 原文地址:https://www.cnblogs.com/gerenboke/p/13389105.html
Copyright © 2011-2022 走看看