小編給大家分享一下python線程事件Event的原理是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)建站主營(yíng)寧國(guó)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),寧國(guó)h5成都微信小程序搭建,寧國(guó)網(wǎng)站營(yíng)銷推廣歡迎寧國(guó)等地區(qū)企業(yè)咨詢
原理分析
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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!