网站: 百度指定贴吧
urls:
- tieba.baidu.com/f?kw=[#]=utf-8&pn=[#+50]
create table if not exists tiezi(
title varchar(200),
author varchar(20),
create_time varchar(10),
reply_num int,
last_reply varchar(50),
content varchar(1000)
);
"INSERT INTO tiezi (title, author, create_time, reply_num, last_reply, content) values (%s, %s, %s, %s, %s, %s)", (item['title'], item['author'], item['create_time'], item['reply_num'], item['last_reply'], item['content'])
以炉石传说吧前两百页为例子
单线程
242.61285209655762
多线程
8线程
35.76421284675598
16线程
23.506305932998657
32线程 21.40897274017334
多线程-future
32线程
18.901715993881226
11.27827763557434(存入redis)
13.140218257904053(响应+解析+存入redis+导入mongoDB)
64线程 17.94631290435791
5倍, 50000帖子 63.30482363700867(响应+解析+存入redis+导入mongoDB) 升级了带宽 25.028305530548096
多进程+多线程
54.989933013916016 5万 每个跨度循环结束后保存数据
43.198081493377686 5万 每个进程结束保存数据
103.46190881729126 10万 8进程
27.243698596954346 5万 4进程 大大减少了读存数据的次数
异步
6.3642566204071045 (单单请求与响应)
异步(存入mysql)
75.84078431129456
异步请求, 32线程写入
21.274948835372925
gevent 64线程 23.599619150161743
asyncio单进程 64线程 15秒
celery+gevent 64线程 25秒 - 4个worker
celery+asyncio 64线程 25秒 - 4个worker