成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python線程事件Event(30)

在python項(xiàng)目開發(fā)中,線程thread使用是比較常見的,在前面的文章中我們介紹了?python線程的創(chuàng)建??以及?線程互斥鎖?,今天還要額外介紹一個(gè)與線程相關(guān)的內(nèi)容 –?事件Event。

公司專注于為企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、電子商務(wù)商城網(wǎng)站建設(shè),小程序開發(fā),軟件按需網(wǎng)站策劃等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。

?

一.python事件Event相關(guān)函數(shù)介紹

set()?— 全局內(nèi)置標(biāo)志Flag,將標(biāo)志Flag 設(shè)置為 True,通知在等待狀態(tài)(wait)的線程恢復(fù)運(yùn)行;

isSet()?— 獲取標(biāo)志Flag當(dāng)前狀態(tài),返回True 或者 False;

wait()?— 一旦調(diào)用,線程將會(huì)處于阻塞狀態(tài),直到等待其他線程調(diào)用set()函數(shù)恢復(fù)運(yùn)行;

clear()?— 將標(biāo)志設(shè)置為False;

?

二.python事件Event原理

事件event中有一個(gè)全局內(nèi)置標(biāo)志Flag,值為 True 或者False。使用wait()函數(shù)的線程會(huì)處于阻塞狀態(tài),此時(shí)Flag指為False,直到有其他線程調(diào)用set()函數(shù)讓全局標(biāo)志Flag置為True,其阻塞的線程立刻恢復(fù)運(yùn)行,還可以用isSet()函數(shù)檢查當(dāng)前的Flag狀態(tài).

?

python 線程事件Event(30)

?

三.python事件Event使用

假如有這樣一個(gè)場(chǎng)景:有10個(gè)單身狗,對(duì)面100米有10個(gè)美女,同時(shí)起跑,一人一個(gè),自由選擇,先到先得…..

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""

@Author:何以解憂

@Blog(個(gè)人博客地址): shuopython.com

@WeChat Official Account(微信公眾號(hào)):猿說python

@Github:www.github.com

@File:python_event.py

@Time:2019/10/20 21:25

?

@Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!

"""

?

# 導(dǎo)入線程模塊

importthreading

?

# 創(chuàng)建event事件

eEvent=threading.Event()

?

defget_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()

?

????foriinrange(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()

?

????# 遍歷列表,阻塞主線程

????fortinthread_list:

????????# 阻塞主線程,等待所有子線程結(jié)束

????????t.join()

?

????print("程序結(jié)束!")

輸出結(jié)果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

單身狗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(30)

?

四.重點(diǎn)總結(jié)

注意互斥鎖Lock與事件Event區(qū)別,需求不同,使用方式也不同:

互斥鎖Lock主要針對(duì)多個(gè)線程同時(shí)操作同一個(gè)數(shù)據(jù),使用互斥鎖可以保證數(shù)據(jù)正常修改或者訪問;

事件Event主要用于喚醒正在阻塞等待狀態(tài)的線程;

?

?

猜你喜歡:

1.python線程創(chuàng)建和參數(shù)傳遞

2.python互斥鎖Lock

3.python列表推導(dǎo)式

4.python字典推導(dǎo)式

?

轉(zhuǎn)載請(qǐng)注明:猿說Python???python 事件Event

當(dāng)前標(biāo)題:python線程事件Event(30)
路徑分享:http://jinyejixie.com/article22/pgiejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、移動(dòng)網(wǎng)站建設(shè)全網(wǎng)營(yíng)銷推廣、商城網(wǎng)站、小程序開發(fā)微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
闽清县| 鲜城| 邵阳市| 鄂尔多斯市| 中西区| 景洪市| 仁布县| 清远市| 明光市| 临泽县| 南昌县| 芷江| 东兰县| 龙江县| 天全县| 铜鼓县| 云龙县| 赤城县| 永修县| 南丰县| 丹江口市| 霸州市| 长丰县| 鹤岗市| 柳州市| 仪陇县| 攀枝花市| 甘德县| 黄陵县| 景谷| 临沧市| 江口县| 宁化县| 邯郸市| 龙陵县| 高密市| 贵德县| 东山县| 隆化县| 桐柏县| 鄂温|