收藏 400-998-9776 转2 服务时间 周一至周日 9:00-23:00 注意:本站不提供境外服务
您的位置:首页 >文章内容
采集信息使用多进程好还是多线程好?
来源:互联网 作者:admin 时间:2019-02-26 16:50:12

      单个爬虫的爬取量太少了,如果需要爬取上万甚至更多的网页,这是无法满足需求的。为了降低耗时,可以使用多进程或者多线程爬取。那么使用多进程好还是多线程好?今天小编为大家介绍下关于多进程和多线程。


  在python爬虫中,一般用的是多进程进行爬取,因为多线程并不能提高CPU的使用率,而且多线程其实是交替执行,多进程才是并发执行。


  多进程,顾名思义,多个进程并发执行,可以有效提高程序的执行效率,优点是非常稳定,即使有子进程崩溃了,主进程和其他进程依然可以继续执行,缺点是在windows下创建进程的开销比较大,而且如果进程太多,往往会影响整个系统的调度。


  多线程是指一个进程内多个线程同时执行,进而提高程序执行效率,其优点可能是比多进程稍微快一点,但缺点也很明显,多线程中一个线程出现了问题就会导致整个进程崩溃,因此稳定性不是很高。


  因为GIL(全局解释器锁)的限制(GIL是用来保证在任意时刻只能有一个控制线程在执行),所以python中的多线程并非真正的多线程。只有python程序是I/O密集型应用时,多线程才会对运行效率有显著提高(因在等待I/O的时,会释放GIL允许其他线程继续执行),而在计算密集型应用中,多线程并没有什么用处。考虑到要充分利用多核CPU的资源,允许python可以并行处理一些任务,这里就用到了python多进程编程了。


  先上一个多进程和单进程测试的结果:


  采集信息使用多进程好还是多线程好?

  我们可以发现,多进程执行比单进程速度快了十几倍,所以说,并行大法好啊。


  我这里用的是Pool池的方法来使用多进程的:


  当使用Process类管理非常多(几十上百个)的进程时,就会显得比较繁琐,这是就可以使用Pool(进程池)来对进程进行统一管理。当池中进程已满时,有新进程请求执行时,就会被阻塞,直到池中有进程执行结束,新的进程请求才会被放入池中并执行。

   采集信息使用多进程好还是多线程好?

  用法示例:


采集信息使用多进程好还是多线程好?


  运行结果:

  采集信息使用多进程好还是多线程好?

  我个人在爬虫中的用法:

  采集信息使用多进程好还是多线程好?

采集信息使用多进程好还是多线程好?



推荐阅读
  • 07 2019-05
    手机切换动态IP地址工具

    手机切换动态IP地址工具分享!现在手机的使用比较广,不管是手机工作还是手机娱乐,也是可能需要更换IP地址的,那么手机切换动态IP地址有什么好方法吗?

  • 09 2019-09
    爬虫如何选代理IP​?

    爬虫如何选代理IP​?生活中很多的事情都可以用爬虫来采集数据,例如想买房了要比对一下房价,那么我们可以在链家上采集他们的房价数据,再进行分析,得出一个最佳的方案。但是链家的封

  • 24 2019-05
    网络爬虫要不要使用代理IP

    网络爬虫要不要使用代理IP?很大一部分人认为Python爬虫必须使用ip proxy,如果没有代理ip会很困难,但很多人认为代理ip不是必需品,可以用其他工具代替,那么网络爬虫必须使用代理ip软件?

  • 10 2019-05
    代理ip平台哪个价格低些?

    一个网站可能前期搭建起来比较快,什么规则以及防御这些都没有完善,大家使用起来也非常方便。但是随着科技的进步,网络也发展得特别得快,逐渐的网站一层一层增加防御,还想多发广告

  • 31 2019-07
    寻找质量超级好的代理IP

    寻找质量超级好的代理IP,到哪里找呢?代理IP好不好用主要还是看个人需求,为什么这么说呢?如果单纯从代理IP的质量和流水来讲,这些商家的产品自然是可以分为好几个档次的,但是每个人

  • 27 2018-12
    刷单有风险,电商怎么刷单不被发现

    为什么电商要刷单?对于电商刷单,相信大家都有所耳闻,虽然很多商家刷单都被抓到,但是还是杜绝不了刷单大军。平台抓得越严格,商家也有各种得应对方法,那么电商怎么刷单不被发现呢