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

这篇文章永久挂在首页,就是为了给一些人说Python做爬虫慢的人啪啪打脸。

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

在网络爬虫中,速度受数据下载、数据分析、数据存储的影响,主要影响是数据下载和数据存储,数据下载的影响是网络IO,数据存储是磁盘IO,这次模拟数据下载是1秒,然后数据存储直接存储在redis中,redis是内网的redis库。以下是同时执行10wMagnet 100wrec 100w任务的耗时情况。

[En]

In the web crawler, the speed is affected by data download, data analysis, data storage, the main impact is data download and data storage, the impact of data download is network IO, data storage is disk IO, this simulation data download is 1s, and then data storage is directly stored in redis, redis is the redis library of the intranet. The following is the time-consuming situation of concurrently 10wMagnet 100wrec 100w tasks.

该服务器是一台个人笔记本电脑,配置如下

[En]

The server is a personal laptop and is configured as follows

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

测试代码如下:

[En]

The test code is as follows:

#-*-coding:utf-8-*-
import time
from gevent import monkey
monkey.patch_all()
import gevent
import redis

RedisDatabases = {
    "host": "10.10.25.207",
    "port": "6379",
}

r = redis.Redis(host=RedisDatabases['host'],port=RedisDatabases['port'], db=0)

def spider(item):
    time.sleep(1)
    r.sadd('test',item)

if __name__ == "__main__":

    start_time = time.time()

    result_List = [page for page in range(10000)]
    print ("本次接口获得的IP个数是:", len(result_List))
    from gevent import pool

    pool = pool.Pool(128)
    jobs = []
    for item in result_List:
        proxie = item
        jobs.append(pool.spawn(spider, item))
    gevent.joinall(jobs, timeout=3600)
    print("程序验证耗时:", time.time() - start_time)

测试一:

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

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

测试二:

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

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

测试三:

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

测试四:

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

测试五:

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

测试六:

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

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

测试七:

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

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

测试八:

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

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

测试九:

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

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

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

统计图:

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

总结:

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

Original: https://www.cnblogs.com/xuchunlin/p/16541288.html
Author: 淋哥
Title: python 做爬虫真的很慢吗?(协程并发测试 )

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/7435/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部