python多線程獲取網絡數據,與單線程進行比較

-- coding:UTF-8 --

import requests
import re
import time
from multiprocessing.dummy import Pool as ThreadPool
import sys

reload(sys)
sys.setdefaultencoding(‘utf8’)

def loadingContent(url):
”’
網絡獲取信息
:param url:網址
:return:
”’
return requests.get(url).text

def getAllContent(url,start,end):
”’
獲取所有數據
:param url:網址的前半段
:param start: 開始頁
:param end: 結束頁
:return:
”’
for i in range(start,end):
u = url + str(i)
loadingContent(u)

def threadLoading(fun,urls):
”’
並行獲取數據
:param fun:
:param urls:
:return:
”’
pool = ThreadPool(2)
results = pool.map(fun,urls)
pool.close()
pool.join()

main

if name == ‘main‘:
url = ‘http://tieba.baidu.com/f?kw=%E8%8B%B1%E9%9B%84%E8%81%94%E7%9B%9F&ie=utf-8&pn=
time1 = time.time()
getAllContent(url,1,20)
time2 = time.time()
print str(time2 - time1)

time3 = time.time()
urls = []
for i in range(1,20):
    urls.append(url+str(i))
threadLoading(loadingContent,urls)
time4 = time.time()
print str(time4 - time3)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章