爬蟲(六)多執行緒爬蟲

2022-06-25 16:54:09 字數 2723 閱讀 4154

import threading # 引入多執行緒模組

import time

def run(name):

print(name,"執行緒執行了!")

time.sleep(5)

# 建立2個執行緒物件

t1 = threading.thread(target=run,args=("t1",))

t2 = threading.thread(target=run,args=("t2",))

# 啟動執行緒

t1.start()

t2.start()

# 等待子執行緒執行完畢後再繼續執行主線程後的內容

使用threading 模組建立執行緒

建立乙個新的子類繼承threading、thread

例項化後呼叫 start() 方法啟動新執行緒,即它呼叫了執行緒的 run() 方法

import threading # 引入多執行緒模組

import time

class mythread(threading.thread):

def __init__(self,name):

threading.thread.__init__(self)

self.name = name

def run(self):

print('開始執行緒')

print('執行緒執行中---1')

time.sleep(1)

print('執行緒執行中---2')

time.sleep(1)

print('執行緒執行中---3')

time.sleep(1)

print('執行緒執行中---4')

time.sleep(1)

print('執行緒執行中---5')

time.sleep(1)

print('結束執行緒',self.name)

# 建立執行緒

t1 = mythread("t1")

t2 = mythread("t2")

t3 = mythread("t3")

# 開啟執行緒

佇列queue

queue 是python標準集中的執行緒安全的實現

提供了乙個適用於多執行緒程式設計的先進先出的資料結構

佇列

用來在生產者和消費者之間的資訊傳遞

對於資源,加鎖是個重要的環節

因為python原生的list,dict等,都是非執行緒安全的

而queue,是執行緒安全的,因此在滿足使用條件下,建議使用佇列

import queue

# 建立佇列

q = queue.queue(maxsize=10) # 佇列最多物件數是10

for i in range(1,11):

q.put(i) # 往佇列裡放值

# 判斷佇列是否為空,迴圈取出所有值

# 使用了執行緒庫

import threading

# 佇列

import queue

import os

import time

import requests

from lxml import etree

# 8hr/page/1/

# 8hr/page/2/

# 8hr/page/3/

# 爬取網頁執行緒--獲取段子列表所在的網頁,放進佇列

file = os.path.abspath(__file__) # 1、獲取當前檔案路徑

path = file.split('多執行緒爬蟲')[0] # 2、獲取共同路徑部分

filepath = path + '多執行緒爬蟲/多執行緒.txt'

class thread1(threading.thread):

def __init__(self, threadname, pagequeue, dataqueue):

threading.thread.__init__(self)

self.threadname = threadname # 執行緒名

self.pagequeue = pagequeue # 頁碼

self.dataqueue = dataqueue # 資料佇列

python爬蟲 多執行緒爬蟲

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

網路爬蟲 多執行緒爬蟲

多執行緒爬蟲 import threading class one threading.thread def init self threading.thread.init self def run self for i in range 0,10 print 我是執行緒1 class two th...

爬蟲多執行緒

多執行緒在之前的scrapy裡面已經接觸過了,就是裡面的yiled,開啟乙個新的執行緒。但是這是這是基於這個高階框架的,用的時候只知道這是開啟了乙個新的執行緒,並不是很清楚到底是怎麼執行的。而在python裡面有包 import threading引入這個包之後就可以寫自己的多執行緒了 寫多執行緒的...