最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python多線程之事件Event的使用詳解

 更新時間:2018年04月27日 09:16:15   作者:上海-悠悠  
本篇文章主要介紹了python多線程之事件Event的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

小伙伴a,b,c圍著吃火鍋,當(dāng)菜上齊了,請客的主人說:開吃!,于是小伙伴一起動筷子,這種場景如何實(shí)現(xiàn)

Event(事件)

Event(事件):事件處理的機(jī)制:全局定義了一個內(nèi)置標(biāo)志Flag,如果Flag值為 False,那么當(dāng)程序執(zhí)行 event.wait方法時就會阻塞,如果Flag值為True,那么event.wait 方法時便不再阻塞。

Event其實(shí)就是一個簡化版的 Condition。Event沒有鎖,無法使線程進(jìn)入同步阻塞狀態(tài)。

Event()

  1. set(): 將標(biāo)志設(shè)為True,并通知所有處于等待阻塞狀態(tài)的線程恢復(fù)運(yùn)行狀態(tài)。
  2. clear(): 將標(biāo)志設(shè)為False。
  3. wait(timeout): 如果標(biāo)志為True將立即返回,否則阻塞線程至等待阻塞狀態(tài),等待其他線程調(diào)用set()。
  4. isSet(): 獲取內(nèi)置標(biāo)志狀態(tài),返回True或False。

Event案例1

場景:小伙伴a和b準(zhǔn)備就緒,當(dāng)收到通知event.set()的時候,會執(zhí)行a和b線程

# coding:utf-8

import threading
import time

event = threading.Event()


def chihuoguo(name):
  # 等待事件,進(jìn)入等待阻塞狀態(tài)
  print '%s 已經(jīng)啟動' % threading.currentThread().getName()
  print '小伙伴 %s 已經(jīng)進(jìn)入就餐狀態(tài)!'%name
  time.sleep(1)
  event.wait()
  # 收到事件后進(jìn)入運(yùn)行狀態(tài)
  print '%s 收到通知了.' % threading.currentThread().getName()
  print '小伙伴 %s 開始吃咯!'%name

# 設(shè)置線程組
threads = []

# 創(chuàng)建新線程
thread1 = threading.Thread(target=chihuoguo, args=("a", ))
thread2 = threading.Thread(target=chihuoguo, args=("b", ))

# 添加到線程組
threads.append(thread1)
threads.append(thread2)

# 開啟線程
for thread in threads:
  thread.start()

time.sleep(0.1)
# 發(fā)送事件通知
print '主線程通知小伙伴開吃咯!'
event.set()

運(yùn)行結(jié)果:

Thread-1 已經(jīng)啟動
小伙伴 a 已經(jīng)進(jìn)入就餐狀態(tài)!
Thread-2 已經(jīng)啟動
小伙伴 b 已經(jīng)進(jìn)入就餐狀態(tài)!
主線程通知小伙伴開吃咯!
Thread-1 收到通知了.
小伙伴 a 開始吃咯!
Thread-2 收到通知了.
小伙伴 b 開始吃咯!

Event案例2

場景:當(dāng)小伙伴a,b,c集結(jié)完畢后,請客的人發(fā)話:開吃咯!

# coding:utf-8

import threading
import time

event = threading.Event()


def chiHuoGuo(name):
  # 等待事件,進(jìn)入等待阻塞狀態(tài)
  print '%s 已經(jīng)啟動' % threading.currentThread().getName()
  print '小伙伴 %s 已經(jīng)進(jìn)入就餐狀態(tài)!'%name
  time.sleep(1)
  event.wait()
  # 收到事件后進(jìn)入運(yùn)行狀態(tài)
  print '%s 收到通知了.' % threading.currentThread().getName()
  print '%s 小伙伴 %s 開始吃咯!'%(time.time(), name)


class myThread (threading.Thread):  # 繼承父類threading.Thread
  def __init__(self, name):
    '''重寫threading.Thread初始化內(nèi)容'''
    threading.Thread.__init__(self)

    self.people = name

  def run(self):  # 把要執(zhí)行的代碼寫到run函數(shù)里面 線程在創(chuàng)建后會直接運(yùn)行run函數(shù)
    '''重寫run方法'''

    chiHuoGuo(self.people)   # 執(zhí)行任務(wù)
    print("qq交流群:226296743")
    print("結(jié)束線程: %s" % threading.currentThread().getName())

# 設(shè)置線程組
threads = []
# 創(chuàng)建新線程
thread1 = myThread("a")
thread2 = myThread("b")
thread3 = myThread("c")

# 添加到線程組
threads.append(thread1)
threads.append(thread2)
threads.append(thread3)

# 開啟線程
for thread in threads:
  thread.start()

time.sleep(0.1)
# 發(fā)送事件通知
print '集合完畢,人員到齊了,開吃咯!'
event.set()

運(yùn)行結(jié)果:

Thread-1 已經(jīng)啟動
小伙伴 a 已經(jīng)進(jìn)入就餐狀態(tài)!
Thread-2 已經(jīng)啟動
小伙伴 b 已經(jīng)進(jìn)入就餐狀態(tài)!
Thread-3 已經(jīng)啟動
小伙伴 c 已經(jīng)進(jìn)入就餐狀態(tài)!
集合完畢,人員到齊了,開吃咯!
Thread-1 收到通知了.
1516780957.47 小伙伴 a 開始吃咯!
qq交流群:226296743
結(jié)束線程: Thread-1
Thread-3 收到通知了.
1516780957.47 小伙伴 c 開始吃咯!Thread-2 收到通知了.
qq交流群:226296743

1516780957.47 小伙伴 b 開始吃咯!結(jié)束線程: Thread-3

qq交流群:226296743
結(jié)束線程: Thread-2

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用Python制作檢測Linux運(yùn)行信息的工具的教程

    用Python制作檢測Linux運(yùn)行信息的工具的教程

    這篇文章主要介紹了用Python制作檢測Linux運(yùn)行信息的工具的教程,主要是用CPython讀取運(yùn)行系統(tǒng)的硬件參數(shù)、網(wǎng)絡(luò)傳輸流量統(tǒng)計等,需要的朋友可以參考下
    2015-04-04
  • Django 自動生成api接口文檔教程

    Django 自動生成api接口文檔教程

    今天小編就為大家分享一篇Django 自動生成api接口文檔教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python基于pip實(shí)現(xiàn)離線打包過程詳解

    Python基于pip實(shí)現(xiàn)離線打包過程詳解

    這篇文章主要介紹了Python基于pip實(shí)現(xiàn)離線打包過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • python數(shù)字轉(zhuǎn)對應(yīng)中文的方法總結(jié)

    python數(shù)字轉(zhuǎn)對應(yīng)中文的方法總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于python數(shù)字轉(zhuǎn)對應(yīng)中文的方法總結(jié)內(nèi)容,有興趣的朋友們可以跟著猜嘗試測試下。
    2021-08-08
  • Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟

    Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟

    數(shù)據(jù)庫非常重要,程序的數(shù)據(jù)增刪改查需要數(shù)據(jù)庫支持,python處理數(shù)據(jù)庫非常簡單,而且不同類型的數(shù)據(jù)庫處理邏輯方式大同小異,下面這篇文章主要給大家介紹了關(guān)于Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟,需要的朋友可以參考下
    2022-07-07
  • Python實(shí)現(xiàn)1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式的示例

    Python實(shí)現(xiàn)1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式的示例

    下面小編就為大家?guī)硪黄狿ython實(shí)現(xiàn)1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python的Tkinter點(diǎn)擊按鈕觸發(fā)事件的例子

    Python的Tkinter點(diǎn)擊按鈕觸發(fā)事件的例子

    今天小編就為大家分享一篇Python的Tkinter點(diǎn)擊按鈕觸發(fā)事件的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python?ocr簡單示例之識別驗(yàn)證碼

    python?ocr簡單示例之識別驗(yàn)證碼

    OCR(Optical character recognition,光學(xué)字符識別)是一種將圖像中的手寫字或者印刷文本轉(zhuǎn)換為機(jī)器編碼文本的技術(shù),下面這篇文章主要給大家介紹了關(guān)于python?ocr簡單示例之識別驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • python統(tǒng)計字符的個數(shù)代碼實(shí)例

    python統(tǒng)計字符的個數(shù)代碼實(shí)例

    在本篇文章里小編給大家整理了關(guān)于python統(tǒng)計字符的個數(shù)代碼實(shí)例內(nèi)容,需要的朋友們可以參考下。
    2020-02-02
  • Python 訪問限制 private public的詳細(xì)介紹

    Python 訪問限制 private public的詳細(xì)介紹

    在一個模塊中,我們可能會定義很多函數(shù)和變量。這篇文章主要介紹了Python 訪問限制 private public的詳細(xì)介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10

最新評論

南陵县| 丹东市| 吉林省| 朝阳市| 天峨县| 友谊县| 冀州市| 蒲城县| 庆元县| 唐海县| 阳谷县| 巴青县| 太仆寺旗| 杭州市| 喀喇沁旗| 博湖县| 安徽省| 咸宁市| 汾阳市| 新建县| 神农架林区| 多伦县| 清涧县| 合水县| 塘沽区| 西昌市| 巴塘县| 九龙坡区| 津南区| 木里| 长子县| 通辽市| 丹凤县| 佛山市| 清远市| 岳阳市| 绍兴市| 东乡| 安陆市| 嘉定区| 揭东县|