新聞中心
是時(shí)候了解更多 python 中的線程了。在本教程中,我們將介紹一個(gè)重要的類,Event類,它在 python 中用于線程同步。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括騰沖網(wǎng)站建設(shè)、騰沖網(wǎng)站制作、騰沖網(wǎng)頁(yè)制作以及騰沖網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,騰沖網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到騰沖省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
這個(gè)類通過(guò)生成事件用于線程間通信。
Python 多線程:事件對(duì)象
事件類對(duì)象提供了一種簡(jiǎn)單的機(jī)制,用于線程之間的通信,其中一個(gè)線程發(fā)出事件信號(hào),而其他線程等待它。因此,當(dāng)一個(gè)用于產(chǎn)生信號(hào)的線程產(chǎn)生信號(hào)時(shí),等待的線程就會(huì)被激活。
一個(gè)內(nèi)部標(biāo)志被稱為事件標(biāo)志的事件對(duì)象使用,該標(biāo)志可以使用set()方法設(shè)置為真,并且可以使用clear()方法重置為假。
wait()方法阻塞一個(gè)線程,直到它正在等待的事件標(biāo)志被任何其他線程設(shè)置為真..
以下是與事件對(duì)象一起使用的有用函數(shù):
初始化事件對(duì)象
我們可以如下初始化事件對(duì)象:
import threading
are_you_coming = threading.Event()當(dāng)我們像這樣初始化一個(gè)事件對(duì)象時(shí),默認(rèn)情況下內(nèi)部標(biāo)志被設(shè)置為假。
isSet()方法
當(dāng)且僅當(dāng)內(nèi)部標(biāo)志為真時(shí),此方法返回真。
import threading
are_you_coming = threading.Event()
print(are_you_coming.isSet())錯(cuò)誤的
set()方法
當(dāng)對(duì)任何事件對(duì)象調(diào)用此方法時(shí),內(nèi)部標(biāo)志被設(shè)置為 true。一旦為任何事件調(diào)用set()方法,所有等待它的線程都會(huì)被喚醒。
clear()方法
此方法將內(nèi)部標(biāo)志重置為 false。隨后,對(duì)調(diào)用clear()的事件調(diào)用wait()的線程將阻塞,直到內(nèi)部標(biāo)志再次不為真。
wait([timeout])方法
當(dāng)我們必須讓任何線程等待一個(gè)事件時(shí),我們可以這樣做:在內(nèi)部標(biāo)志設(shè)置為 false 的事件上調(diào)用這個(gè)方法,這樣做將阻塞線程,直到事件的內(nèi)部標(biāo)志為 true。
如果入口時(shí)內(nèi)部標(biāo)志為真,則線程永遠(yuǎn)不會(huì)被阻塞。否則,它將被阻止,直到另一個(gè)線程調(diào)用set()將標(biāo)志設(shè)置為真,或者直到可選超時(shí)發(fā)生。timeout 參數(shù)以秒為單位指定操作超時(shí)。
舉個(gè)例子
讓我們有一個(gè)簡(jiǎn)單的代碼示例來(lái)演示Event類對(duì)象的用法。
在下面的代碼中,我們將創(chuàng)建一個(gè)線程,讓它等待一個(gè)由主線程生成的事件,釋放第一個(gè)線程。
在上面的程序中,我們也使用了wait()方法的timeout屬性。
當(dāng)線程調(diào)用wait([timeout])方法時(shí),如果在接收事件對(duì)象時(shí)釋放等待,則該方法返回布爾值真,否則如果由于超時(shí)而釋放等待,則該方法返回假。
為了測(cè)試這一點(diǎn),更改第 18 行作為參數(shù)args=(e,4)發(fā)送的超時(shí)值,并使其小于睡眠時(shí)間,例如,將超時(shí)值設(shè)置為 2 并查看輸出。
網(wǎng)站題目:使用事件對(duì)象的線程同步
網(wǎng)站網(wǎng)址:http://m.5511xx.com/article/dhcpgid.html


咨詢
建站咨詢
