溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python線程事件Event的原理是什么

發(fā)布時(shí)間:2021-06-25 09:13:45 來源:億速云 閱讀:209 作者:小新 欄目:編程語言

小編給大家分享一下python線程事件Event的原理是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

原理分析

1、事件event中有一個(gè)全局內(nèi)置標(biāo)志Flag,值為True或False。

2、使用wait函數(shù)的線程將處于堵塞狀態(tài)。此時(shí),F(xiàn)lag是指False,直到其他線程調(diào)用set函數(shù)將全球標(biāo)志Flag放置為True,堵塞的線程將立即恢復(fù)運(yùn)行,并使用isSet函數(shù)檢查當(dāng)前Flag狀態(tài)。

實(shí)例

# !usr/bin/env python
# -*- coding:utf-8 _*-
# 導(dǎo)入線程模塊
import threading
 
# 創(chuàng)建event事件
eEvent = threading.Event()
 
def get_girl_friend(id):
    print("單身狗{}都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):{}.....".format(id,eEvent.isSet()))
    eEvent.wait()
    print("單身狗%d告別單身....."%id)
 
 
if __name__ == "__main__":
 
    thread_list = list()
 
    for i in range(1,11):
        # 創(chuàng)建并初始化線程
        t = threading.Thread(target=get_girl_friend,args=(i,))
        # 啟動(dòng)線程
        t.start()
        # 將線程句柄添加list列表中
        thread_list.append(t)
 
    # 所有線程準(zhǔn)備完畢,將event內(nèi)置Flag設(shè)置為True,恢復(fù)正在阻塞的線程
    eEvent.set()
 
    # 遍歷列表,阻塞主線程
    for t in thread_list:
        # 阻塞主線程,等待所有子線程結(jié)束
        t.join()
 
    print("程序結(jié)束!")
 
 
'''
輸出結(jié)果:
 
單身狗1都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗2都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗3都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗4都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗5都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗6都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗7都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗8都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗9都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗10都準(zhǔn)備完畢,內(nèi)置Flag狀態(tài):False.....
單身狗5告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗6告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗7告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗1告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗8告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗10告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗4告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗9告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗3告別單身,內(nèi)置Flag狀態(tài):True.....
單身狗2告別單身,內(nèi)置Flag狀態(tài):True.....
程序結(jié)束!
'''

以上是“python線程事件Event的原理是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI