Python多執行緒爬蟲簡單示例

2022-10-04 22:00:22 字數 1965 閱讀 3221

python是支援多執行緒的,主要是通過thread和threading這兩個模組來實現的。thread模程式設計客棧塊是比較底層的模組,threading模組是對thread做了一些包裝的,可以更加方便的使用。

雖然python的多執行緒受gil限制,並不是真正的多執行緒,但是對於i/o密集型計算還是能明顯提高效率,比如說爬蟲。

下面用乙個例項來驗證多執行緒的效率。**只涉及頁面獲取,並沒有解析出來。

# -*-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

if __name__ == '__main__':

# 構造url列表

urllist =

for p in range(1, 10):

urllist.append('' + str(p))

# 一般方式

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)

# 多執行緒

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個訪問速度比較慢的網頁,一般方式耗時50s,多執行緒耗時10s。

多執行緒**解讀:

# 建立執行緒類,繼承thread類

class mythread(threading.thread):

def __init__(self, func, args):

threading.thread.__init__(self) # 呼叫父類的建構函式

self.args = args

self.func = func

def run(self): # 執行緒活動方法

awww.cppcns.compply(self.func, self.args)

threadlist = [mythread(open_url, (url,)) for url in urllist] # 呼叫執行緒類建立新執行緒,返回執行緒列表

for t in threadlist:

t.setdaemon(true) # 設定守護執行緒,父執行緒會等待子執行緒執行完後再退出

t.start() # 執行緒開啟

for i in threadlist:

i.join() # 等待執行緒終止,等子執行緒執行完後再執行父執行緒

本文標題: python多執行緒爬蟲簡單示例

本文位址:

多執行緒簡單示例。。。

插入兩個list box,分別為 idc list1 和 idc list2 再插入乙個按鈕,為 idc button1 caption為 run 效果圖如下 雙擊 run 按鈕,新建 onbtnrun 函式。如下 void cmultthreadsdlg onbtnrun 在cmultthread...

多執行緒簡單示例

原文 多執行緒簡單示例 using system using system.collections.generic using system.linq using system.text using system.threading using system.runtime.remoting.mes...

python爬蟲 多執行緒爬蟲

在進行爬蟲工作的時候,考慮到爬蟲執行的速度慢,那麼怎樣提公升爬蟲的速度呢,那麼就得使用多執行緒爬蟲了,接下來我以糗事百科段子的爬取進行對多執行緒爬蟲的概述 github鏈結 鏈結一 不使用多執行緒爬取糗事百科 1.上 import urllib.request import re headers f...