国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python 爬蟲多線程詳解及實(shí)例代碼

Python 爬蟲多線程詳解及實(shí)例代碼

2020-09-09 09:58Python教程網(wǎng) Python

這篇文章主要介紹了Python 爬蟲多線程詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下

python是支持多線程的,主要是通過thread和threading這兩個模塊來實(shí)現(xiàn)的。thread模塊是比較底層的模塊,threading模塊是對thread做了一些包裝的,可以更加方便的使用。

雖然python的多線程受GIL限制,并不是真正的多線程,但是對于I/O密集型計算還是能明顯提高效率,比如說爬蟲
下面用一個實(shí)例來驗(yàn)證多線程的效率。代碼只涉及頁面獲取,并沒有解析出來。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*-coding:utf-8 -*-
import urllib2, time
import threading
 
class MyThread(threading.Thread):
 def __init__(self, func, args):
  threading.Thread.__init__(self)
  self.args = args
  self.func = func
 
 def run(self):
  apply(self.func, self.args)
 
def open_url(url):
 request = urllib2.Request(url)
 html = urllib2.urlopen(request).read()
 print len(html)
 return html
?
1
2
3
4
5
if __name__ == '__main__':
 # 構(gòu)造url列表
 urlList = []
 for p in range(1, 10):
  urlList.append('http://s.wanfangdata.com.cn/Paper.aspx?q=%E5%8C%BB%E5%AD%A6&p=' + str(p))
?
1
2
3
4
5
6
# 一般方式
n_start = time.time()
for each in urlList:
 open_url(each)
n_end = time.time()
print 'the normal way take %s s' % (n_end-n_start)
?
1
2
3
4
5
6
7
8
9
10
# 多線程
 t_start = time.time()
 threadList = [MyThread(open_url, (url,)) for url in urlList]
 for t in threadList:
  t.setDaemon(True)
  t.start()
 for i in threadList:
  i.join()
 t_end = time.time()
 print 'the thread way take %s s' % (t_end-t_start)

分別用兩種方式獲取10個訪問速度比較慢的網(wǎng)頁,一般方式耗時50s,多線程耗時10s。
多線程代碼解讀:

?
1
2
3
4
5
6
7
8
9
# 創(chuàng)建線程類,繼承Thread類
class MyThread(threading.Thread):
 def __init__(self, func, args):
  threading.Thread.__init__(self) # 調(diào)用父類的構(gòu)造函數(shù)
  self.args = args
  self.func = func
 
 def run(self): # 線程活動方法
  apply(self.func, self.args)
?
1
2
3
4
5
6
threadList = [MyThread(open_url, (url,)) for url in urlList] # 調(diào)用線程類創(chuàng)建新線程,返回線程列表
 for t in threadList:
  t.setDaemon(True) # 設(shè)置守護(hù)線程,父線程會等待子線程執(zhí)行完后再退出
  t.start() # 線程開啟
 for i in threadList:
  i.join() # 等待線程終止,等子線程執(zhí)行完后再執(zhí)行父線程

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

原文鏈接:http://www.server110.com/python/201603/11541.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 在线a毛片 | 欧美激情精品久久久久久 | 久久男人网 | 国产精品久久久久国产精品 | 精品综合 | 亚洲高清视频在线观看 | 久久久久国产精品 | 欧洲精品视频在线观看 | 国产一区二区高清在线 | 午夜视频在线免费观看 | 亚洲免费视频在线 | 亚洲网站免费 | 国产精品剧情一区二区三区 | av亚洲在线| 在线观看成人 | 国产精品日韩三级 | 色噜噜狠狠狠综合曰曰曰 | 黄免费| 欧美国产综合 | 久久男人免费视频 | 一级黄色毛片免费观看 | 国产黄色成人 | 美女视频一区 | а天堂中文最新一区二区三区 | 特黄一级 | 欧美综合区| 26uuu国产电影一区二区 | caoporn免费| 日本a级片网站 | 国产精品久久久久久中文字 | 日韩精品在线一区 | 久草 在线 | 成年人在线免费观看网站 | 欧美性猛交一区二区三区精品 | 一区二区在线免费观看 | 日日操视频 | 中文字幕66页| 欧美亚洲第一页 | 在线观看的av | 精品国产一区二区三区高潮视 | 色a在线 |