高性能异步爬虫(一)

高性能异步爬虫

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

单线程下以串行方式模拟发送请求,程序运行时间:

  不难发现,程序中的get_content是一个阻塞的方法,当且仅当,当前URL响应成功后,才能对下一个URL发起请求,因此造成了较长的运行时间。

异步爬虫的方式:

  1、多线程,多进程(不建议,太耗资源与内存)

    好处:可以为相关阻塞的操作单独开启线程或进程,阻塞操作就可以异步进行

    弊端:无法无限制的开启多线程或多进程

  2、线程池、进程池(可适当使用)

    好处:可以降低系统对进程或线程创建和销毁的一个频率,很好的降低了系统的开销

    弊端:池中进程或线程的数量有限

    原则:并不能把所有的阻塞操作都交给线程池,线程池只处理阻塞且耗时的操作

使用基本线程池模拟发送请求,程序运行时间:

 

  可以明显的看出,使用线程池后程序运行时间加快了不少,但是如果阻塞操作的数量大大高于池中线程对象数量的时候,线程池的意义也就不大了,那么最为推荐的异步爬虫方式是什么呢?

  答:单线程 + 异步协程,详情见下文~~~

posted @ 2022-01-21 10:26  Sunshine_y  阅读(64)  评论(0编辑  收藏  举报