这篇文章永久挂在首页,就是为了对一些人说Python慢的人啪啪打脸。
总有人说python慢,至于为什么慢就是说不上来,今天就是测试一下python语言的速度
在网络爬虫中,影响速度的有数据下载,数据解析,数据存储,最主要的影响是数据下载和数据存储,数据下载影响是网络IO,数据存储是磁盘IO,本次模拟数据下载是1s,然后数据存储直接是把数据存储到redis中,redis是内网的redis库。下面一次并发10w,100w,100w个任务的耗时情况。
服务器是使用的个人笔记本,配置如下

测试代码如下:
#-*-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 耗时

测试二:
10w个任务,并发数128 耗时

测试三:
100w个任务,并发数128 耗时
测试四:
100w个任务,并发数256 耗时
测试五:
100w个任务,并发数512耗时
测试六:
100w个任务,并发数1024耗时

测试七:
100w个任务,并发数2048耗时

测试八:
100w个任务,并发数4096耗时

测试九:
100w个任务,并发数8192耗时

并发数 8192 耗时521s,并且redis连接错误1785个,有时候不是并发数开的越大速度就越快
总结:
原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/278241.html