python 爬虫 线程池
test.html代码:
测试bs4 百里守约
线程池代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import time
from multiprocessing.dummy import Pool
urls = [
'http://127.0.0.1:5000/bobo',
'http://127.0.0.1:5000/jay',
'http://127.0.0.1:5000/tom'
]
def get_request(url):
page_text = requests.get(url=url).text
return len(page_text)
#同步代码
# if __name__ == "__main__":
# start = time.time()
#
# for url in urls:
# res = get_request(url)
# print(res)
# print('总耗时:',time.time()-start)
#异步代码
if __name__ == "__main__":
start = time.time()
pool = Pool(3) #3表示开启线程的数量
#使用get_request作为回调函数,需要基于异步的形式对urls列表中的每一个列表元素进行操作
#保证回调函数必须要有一个参数和返回值
result_list = pool.map(get_request,urls)
print(result_list)
print('总耗时:', time.time() - start)
FlaskServer.py代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask,render_template
from time import sleep
#实例化一个app
app = Flask(__name__)
#创建视图函数&路由地址
@app.route('/bobo')
def index_1():
sleep(2)
return render_template('test.html')
@app.route('/jay')
def index_2():
sleep(2)
return render_template('test.html')
@app.route('/tom')
def index_3():
sleep(2)
return render_template('test.html')
if __name__ == "__main__":
#debug=True表示开启调试模式:服务器端代码被修改后按下保存键会自动重启服务
app.run(debug=True)