学习笔记(30):Python网络编程并发编程-Event事件
生活随笔
收集整理的這篇文章主要介紹了
学习笔记(30):Python网络编程并发编程-Event事件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
立即學(xué)習(xí):https://edu.csdn.net/course/play/24458/296447?utm_source=blogtoedu
threading.Event事件
?
1.概念及功能:主要是完成線程之間的通信,將另一個(gè)線程的運(yùn)行狀態(tài)通知給另一個(gè)線程
?
2.使用場(chǎng)景:
1)客戶端運(yùn)行時(shí)等待服務(wù)器啟動(dòng)連接,若等待時(shí)間過長或者嘗試連接次數(shù)過多,提示連接失敗。只有等服務(wù)器啟動(dòng)事件成功后,才會(huì)進(jìn)行連接事件
?
3.Event的相關(guān)屬性
1)Event.wait():表示等待,括號(hào)里面可以加上特定的等待時(shí)間
2)Event.set():給等待發(fā)送一個(gè)信號(hào),等待著的線程就會(huì)繼續(xù)運(yùn)行
3)clear:Event默認(rèn)是False,當(dāng)被set后為Ture,clear可以使得其重新設(shè)置為False
4)is_set():判斷事件是否已經(jīng)被set
?
4.代碼
from threading import Thread,Event,currentThread import time#創(chuàng)建事件對(duì)象 event = Event() #創(chuàng)建客戶端函數(shù)模擬客戶端連接 def client():n = 0#設(shè)置等待取消的條件函數(shù),如果嘗試連接的次數(shù)超過5次,則退出等待,因?yàn)閑vent.wait的時(shí)間是0.5,最多等5次,需要2.5秒,而在server中沉睡了5秒,因此會(huì)等不到event.set()的執(zhí)行就退出等待while not event.is_set():if n == 5:print('%s is failed to connect the server')returnn += 1#這里需要注意return和break的區(qū)別,break只是跳出循環(huán),而return是跳出函數(shù),如果用break會(huì)使得返回連接成功的信息print('%s is trying to connect......'%currentThread().getName())print('*'*20,'%s第%s次嘗試連接'%(currentThread().getName(),n),'*'*20)event.wait(0.5)#等待事件的發(fā)生,等待set#print('%s is connected'%currentThread().getName())#創(chuàng)建服務(wù)端函數(shù)模擬服務(wù)器 def server():print("%s is trying to start"%currentThread().getName())time.sleep(3)event.set()if __name__ == '__main__':for i in range(3):c = Thread(target=client)c.start()s = Thread(target=server)s.start() 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的学习笔记(30):Python网络编程并发编程-Event事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 多用户多仓库配置
- 下一篇: 学习笔记(31):Python网络编程并