import requests
from urllib.request import urlopen
from multiprocessing import pool
# 200 網頁正常的返回
# 404 網頁找不到
# 502 504
def get(url):
response = requests.get(url)
if response.status_code == 200:
return url,response.content.decode('utf-8')
def get_urllib(url):
ret = urlopen(url)
return ret.read().decode('utf-8')
def call_back(args):
url,content = args
print(url,len(content))
if __name__ == '__main__':
url_lst = [
'','',
'','',
]p = pool(5)
for url in url_lst:
p.close()
p.join()
import re
from urllib.request import urlopen
from multiprocessing import pool
def get_page(url,pattern):
response=urlopen(url).read().decode('utf-8')
return pattern,response # 正規表示式編譯結果 網頁內容
def parse_page(info):
pattern,page_content=info
res=re.findall(pattern,page_content)
for item in res:
dic=
print(dic)
if __name__ == '__main__':
regex = r'.*?<.*?class="board-index.*?>(\d+).*?title="(.*?)".*?class="movie-item-info".*?(.*?)
.*?(.*?)
' pattern1=re.compile(regex,re.s)
url_dic=
p=pool()
res_l=
for url,pattern in url_dic.items():
for i in res_l:
i.get()
# 程序池
# cpu個數+1
# ret = map(func,iterable)
# 非同步 自帶close和join
# 所有結果的
# 同步的:只有當func執行完之後,才會繼續向下執行其他**
# 返回值就是func的return
# 非同步的:當func被註冊進入乙個程序之後,程式就繼續向下執行
# 為了使用者能從中獲取func的返回值obj.get()
# get會阻塞直到對應的func執行完畢拿到結果
# 需要先close後join來保持多程序和主程序**的同步性
程序池 執行緒池
程序池和執行緒池相似,所以這裡我們以程序池為例介紹,下面對程序池的討論完全適用於執行緒池 如果沒有特殊宣告 程序池是由伺服器預先建立的一組子程序,這些子程序的數目在3 10個之間 典型情況 執行緒池的數量應該和cpu數量差不多。程序池中的所有子程序都執行者相同的 並具有相同的屬性。因為程序池在伺服器...
執行緒池 程序池
執行緒池 程序池 池子解決什麼問題?1.建立 銷毀執行緒伴隨著系統開銷,如果過於頻繁會影響系統執行效率 2.執行緒併發數量過多,搶占系統資源,從而導致系統阻塞甚至宕機 3.能夠剛好的控制和管理池子裡面的執行緒和程序 concurrent.futures模組提供了高度封裝的非同步呼叫介面 thread...
程序池, 執行緒池
知識儲備 池 裝載固定數量介質,該介質值得是程序或者執行緒 為什麼要用?讓機器在自己可承受的範圍內去保證乙個高效的工作 from concurrent.futures import processpoolexecutor,threadpoolexecutor pool processpoolexec...