python3爬蟲中如何防止多執行緒出錯?

2021-10-10 20:35:41 字數 1717 閱讀 1049

最近的溫度已經能感受到寒冬的冷意了,動物們的遷徙也早就完成。那麼大家應該知道,為了防止遷徙途中走錯路,動物的集體遷徙是有乙個領頭的,它會帶領集體走向更溫暖的地帶,可能這點平時我們沒怎麼注意過。這種應用在多執行緒中也有體現,為了不讓其他的執行緒出現混亂,都會有乙個主線程進行控制,這就是領頭的作用,接下來讓我們看看主線程如何防止其它執行緒出錯吧。

python執行緒的事件用於主線程控制其他執行緒的執行,事件是乙個簡單的執行緒同步物件,其主要提供以下幾個方法:

clear 將flag設定為「false」

set 將flag設定為「true」

is_set 判斷是否設定了flag

wait 會一直監聽flag,如果沒有檢測到flag就一直處於阻塞狀態

事件處理的機制:全域性定義了乙個「flag」,當flag值為「false」,那麼event.wait()就會阻塞,當flag值為「true」,那麼event.wait()便不再阻塞。

#利用event類模擬紅綠燈

import threading

import time

event = threading.

event()

def lighter()

: count =

0 event.

set(

) #初始值為綠燈

while true:if5

< count <=10:

event.

clear

() # 紅燈,清除標誌位

print

("\33[41;1mred light is on...\033[0m"

) elif count >10:

event.

set(

) # 綠燈,設定標誌位

count =

0else

:print

("\33[42;1mgreen light is on...\033[0m")

time.

sleep(1

) count +=1

def car

(name)

:while true:

if event.

is_set()

: #判斷是否設定了標誌位

print

("[%s] running..."

%name)

time.

sleep(1

)else

:print

("[%s] sees red light,waiting..."

%name)

event.

wait()

print

("[%s] green light is on,start going..."

%name)

light = threading.

thread

(target=lighter,

)light.

start()

car = threading.

thread

(target=car,args=

("mini",)

)car.

start

()

相信python爬蟲中的各種執行緒,在主線程的帶領下能夠有序的進行運轉,這也是多執行緒中不易出錯的原因之一其它多執行緒模組講解還在持續更新,小夥伴們可以留意。

Python3爬蟲如何模擬登入?

專業的術語,總是讓我們聽得雲裡霧裡,但是總的來說,大家應該都知道爬蟲的基本流程吧,首先是將自己進行偽裝,跟乙個正常的登入使用人員一樣,但是最終,別人只是看一遍知識,而我們是需要進行知識的獲取的,這也就學會爬蟲第一步要知道的內容,好啦話不多說,大家來了解看下吧 先登入成功1次,獲取到攜帶登陸資訊的co...

python3爬蟲實戰(3)

今天心血來潮去爬取了一下招聘 的實時招聘資訊。是 選的條件是北京,實習生,計算機軟體。分析 之後發現還是很容易的,不過過程中出了不少小問題,在這裡分享一下。想要爬取的是類似的表單內容。是在ul的li裡。用beautifulsoup解析之後,tem ul bsoj.find ul 存下整個ul元素。對...

python3 爬蟲入門

這裡爬取貓眼電影 top100 榜的資訊,作為學習的第乙個demo。今天開始接觸的python,從爬蟲開始。語言相對來說比較簡單,環境配置到是花了不少時間。有個要注意的點是在引入beautifursoup庫的時候會報錯,因為3.x的庫需要引入的是beautifursoup4.到這一步環境配置基本上o...