当前位置:   article > 正文

python 做爬虫真的很慢吗?(协程并发测试 )

python monkey速度快吗

 

总有人说python做爬虫速度慢,能开并发数少,至于为什么慢就是说不上来,今天就是测试一下python语言的速度和并发数量。

在网络爬虫中,影响速度的有数据下载,数据解析,数据存储,最主要的影响是数据下载和数据存储,数据下载影响是网络IO,数据存储是磁盘IO,本次模拟数据下载是1s,然后数据存储直接是把数据存储到redis中,redis是内网的redis库。下面一次并发10w,100w,100w个任务的耗时情况。

服务器是使用的个人笔记本,配置如下

测试代码如下:

  1. #-*-coding:utf-8-*-
  2. import time
  3. from gevent import monkey
  4. monkey.patch_all()
  5. import gevent
  6. import redis
  7. RedisDatabases = {
  8. "host": "10.10.25.207",
  9. "port": "6379",
  10. }
  11. r = redis.Redis(host=RedisDatabases['host'],port=RedisDatabases['port'], db=0)
  12. def spider(item):
  13. time.sleep(1)
  14. r.sadd('test',item)
  15. if __name__ == "__main__":
  16. start_time = time.time()
  17. result_List = [page for page in range(10000)]
  18. print ("本次接口获得的IP个数是:", len(result_List))
  19. from gevent import pool
  20. pool = pool.Pool(128)
  21. jobs = []
  22. for item in result_List:
  23. proxie = item
  24. jobs.append(pool.spawn(spider, item))
  25. gevent.joinall(jobs, timeout=3600)
  26. print("程序验证耗时:", time.time() - start_time)

测试一:

  1w个任务,并发数128 耗时

  

测试二:

  10w个任务,并发数128 耗时

  

测试三:

  100w个任务,并发数128 耗时

测试四:

  100w个任务,并发数256 耗时

测试五:

  100w个任务,并发数512耗时

测试六:

  100w个任务,并发数1024耗时

  

测试七:

  100w个任务,并发数2048耗时

  

测试八:

  100w个任务,并发数4096耗时

  

测试九:

  100w个任务,并发数8192耗时

  

   并发数 8192  耗时521s,并且redis连接错误1785个,有时候不是并发数开的越大速度就越快

统计图:

    

总结:

                                  

  影响爬虫因素的方式是多种多样的,比如数据下载,数据存储,数据解析,数据库连接,cpu,内存,路由器,带宽等因素,但是绝对不是因为python是解释型语言,它的速度就应该理所当然的比其他的开发语言慢,强制说python做爬虫就比go做爬虫慢或者能开的并发数量少,这肯定是片面的认知。用python做爬虫主要是优点是开发速度快,代码维护方便,如果一味的追求效率,可以用c或者c++,开发半个月,维护要两天,等爬到数据的时候,黄花菜都凉了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/1004831
推荐阅读
相关标签
  

闽ICP备14008679号