91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

python 線程事件Event(30)

發布時間:2020-08-03 14:52:11 來源:網絡 閱讀:191 作者:qq5d6f345f0205e 欄目:編程語言

在python項目開發中,線程thread使用是比較常見的,在前面的文章中我們介紹了?python線程的創建??以及?線程互斥鎖?,今天還要額外介紹一個與線程相關的內容 –?事件Event

?

一.python事件Event相關函數介紹

set()?— 全局內置標志Flag,將標志Flag 設置為 True,通知在等待狀態(wait)的線程恢復運行;

isSet()?— 獲取標志Flag當前狀態,返回True 或者 False;

wait()?— 一旦調用,線程將會處于阻塞狀態,直到等待其他線程調用set()函數恢復運行;

clear()?— 將標志設置為False;

?

二.python事件Event原理

事件event中有一個全局內置標志Flag,值為 True 或者False。使用wait()函數的線程會處于阻塞狀態,此時Flag指為False,直到有其他線程調用set()函數讓全局標志Flag置為True,其阻塞的線程立刻恢復運行,還可以用isSet()函數檢查當前的Flag狀態.

?

python 線程事件Event(30)

?

三.python事件Event使用

假如有這樣一個場景:有10個單身狗,對面100米有10個美女,同時起跑,一人一個,自由選擇,先到先得…..

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(個人博客地址): shuopython.com

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

@Github:www.github.com

@File:python_event.py

@Time:2019/10/20 21:25

?

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

"""

?

# 導入線程模塊

import threading

?

# 創建event事件

eEvent = threading.Event()

?

def get_girl_friend(id):

????print("單身狗{}都準備完畢,內置Flag狀態:{}.....".format(id,eEvent.isSet()))

????eEvent.wait()

????print("單身狗%d告別單身....."%id)

?

?

if __name__ == "__main__":

?

????thread_list = list()

?

????for i in range(1,11):

????????# 創建并初始化線程

????????t = threading.Thread(target=get_girl_friend,args=(i,))

????????# 啟動線程

????????t.start()

????????# 將線程句柄添加list列表中

????????thread_list.append(t)

?

????# 所有線程準備完畢,將event內置Flag設置為True,恢復正在阻塞的線程

????eEvent.set()

?

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

????for t in thread_list:

????????# 阻塞主線程,等待所有子線程結束

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

?

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

輸出結果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

單身狗1都準備完畢,內置Flag狀態:False.....

單身狗2都準備完畢,內置Flag狀態:False.....

單身狗3都準備完畢,內置Flag狀態:False.....

單身狗4都準備完畢,內置Flag狀態:False.....

單身狗5都準備完畢,內置Flag狀態:False.....

單身狗6都準備完畢,內置Flag狀態:False.....

單身狗7都準備完畢,內置Flag狀態:False.....

單身狗8都準備完畢,內置Flag狀態:False.....

單身狗9都準備完畢,內置Flag狀態:False.....

單身狗10都準備完畢,內置Flag狀態:False.....

單身狗5告別單身,內置Flag狀態:True.....

單身狗6告別單身,內置Flag狀態:True.....

單身狗7告別單身,內置Flag狀態:True.....

單身狗1告別單身,內置Flag狀態:True.....

單身狗8告別單身,內置Flag狀態:True.....

單身狗10告別單身,內置Flag狀態:True.....

單身狗4告別單身,內置Flag狀態:True.....

單身狗9告別單身,內置Flag狀態:True.....

單身狗3告別單身,內置Flag狀態:True.....

單身狗2告別單身,內置Flag狀態:True.....

程序結束!

python 線程事件Event(30)

?

四.重點總結

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

互斥鎖Lock主要針對多個線程同時操作同一個數據,使用互斥鎖可以保證數據正常修改或者訪問;

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

?

?

猜你喜歡:

1.python線程創建和參數傳遞

2.python互斥鎖Lock

3.python列表推導式

4.python字典推導式

?

轉載請注明:猿說Python???python 事件Event


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善左旗| 奉化市| 东宁县| 静安区| 乐安县| 龙山县| 宜丰县| 达拉特旗| 云林县| 司法| 屯昌县| 黔西| 巨野县| 绥中县| 收藏| 句容市| 疏附县| 漳平市| 略阳县| 曲周县| 许昌县| 东兴市| 民丰县| 应用必备| 海门市| 林甸县| 老河口市| 菏泽市| 尉氏县| 莱州市| 济源市| 孟州市| 芮城县| 内丘县| 营山县| 秭归县| 穆棱市| 咸阳市| 全州县| 兴城市| 杨浦区|