一、使用flask模擬阻塞,利用執行緒池爬取資料
#模擬flask
#pip install flask
from flask import flask,render_template #
返回乙個模板檔案需要匯入render_tamplate
from time import
sleep)'
/bobo')
defindex_1():
return
'hello world''
/jay')
defindex_2():
sleep(2)
return render_template('
test.html')
'/tom')
defindex_3():
sleep(2)
return render_template('
test.html')
if__name__ == '
__main__':
括號裡面也可以寫debug=true 也可以不寫
執行緒池**:
#同步**
#import requests
#import time##
urls = [
#'',
#'',
#'',
#'',#]
#start = time.time()
#for url in urls:
#page_text = requests.get(url).text
#print(len(page_text))##
print('總耗時',time.time()-start)
#非同步**
import
requests
import
time
from multiprocessing.dummy import
pool
pool = pool(4)
urls =[
'','',
'','',
]start =time.time()
defget_request(url):
page_text =requests.get(url).text
(len(page_text))
defparse(page_text):
print('
模仿解析')
page_text_list = pool.map(get_request,urls) #
這個map做資料請求
pool.map(parse,page_text_list) #
這個map做資料解析
print('
總耗時',time.time()-start)
如何基於執行緒池提公升request模組效率
普通方法 爬取梨 import re import time import random import requests f程式設計客棧rom lxml import etree start time time.time url headers ex srcurl vdourl srcurl def...
提公升爬蟲效率的方法
任務物件 事件迴圈 特殊函式內部不能寫不支援非同步請求的模組,如time,requests.否則雖然不報錯但實現不了非同步 import asyncio import time start time time.time async def get request url await asyncio....
程序池 執行緒池效率測試
之前我們分別對計算密集型和io密集型任務,測試過多執行緒對執行效率的改進,下面我們依然分計算密集 檔案讀寫 網路請求三個部分,測試使用執行緒池 程序池如何改進執行效率 首先導入庫並定義三種任務的函式 import requests from bs4 import beautifulsoup impo...