日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 线程障碍对象 Barrier - Python零基础入门教程

發布時間:2024/9/27 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 线程障碍对象 Barrier - Python零基础入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一.Python 線程障礙對象 Barrier 簡介
  • 二.Python 線程障礙對象 Barrier 原理
  • 三.Python 線程障礙對象 Barrier 函數介紹
  • 四.Python 線程障礙對象 Barrier 使用
    • 1.案例一:常規使用
    • 2.案例二:重置線程障礙數量 reset
  • 五.猜你喜歡

零基礎 Python 學習路線推薦 : Python 學習目錄 >> Python 基礎入門

Python 線程 Barrier 俗稱障礙對象,也稱柵欄,也叫屏障。?

一.Python 線程障礙對象 Barrier 簡介

# 導入線程模塊 import threading''' 參數介紹:parties — 線程計數器,記錄線程數量,也稱線程障礙數量;action — 是一個可調用函數,當等待的線程到達了線程障礙數量parties,其中一個線程會首先調用action 對應函數,之后再執行線程自己內部的代碼;timeout — 默認的超時時間; '''# 障礙對象barrier barrier = threading.Barrier(parties, action=None, timeout=None)

二.Python 線程障礙對象 Barrier 原理

與之前介紹 互斥鎖 Lock / 事件 Event / 定時器 Timer 等不同,多線程 Barrier 會設置一個線程障礙數量 parties ,如果等待的線程數量沒有達到障礙數量 parties ,所有線程會處于阻塞狀態,當等待的線程到達了這個數量就會喚醒所有的等待線程。

可能說的有點抽象,以播放器為例子:首先一個線程做播放器初始化工作(加載本地文件或者獲取播放地址),然后一個線程獲取視頻畫面,一個線程獲取視頻聲音,只有當初始化工作完畢,視頻畫面獲取完畢,視頻聲音獲取完畢,播放器才會開始播放,其中任意一個線程沒有完成,播放器會處于阻塞狀態直到三個任務都完成!

三.Python 線程障礙對象 Barrier 函數介紹

wait(timeout=None) 阻塞并嘗試通過障礙,如果等待的線程數量大于或者等于線程障礙數量 parties ,則表示障礙通過,執行 action 對應函數并執行線程內部代碼,反之則繼續等待;

如果 wait(timeout=None) 等待超時,障礙將進入斷開狀態!如果在線程等待期間障礙斷開或重置,此方法會引發 BrokenBarrierError 錯誤,注意添加異常處理,演示代碼查看案例一;

reset 重置線程障礙數量,返回默認的空狀態,即當前阻塞的線程重新來過,如果在線程等待期間障礙斷開或重置,此方法會引發 BrokenBarrierError 錯誤,注意添加異常處理,演示代碼查看案例二;

四.Python 線程障礙對象 Barrier 使用

1.案例一:常規使用

# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個人博客地址): www.codersrc.com @File:Python 線程障礙對象 Barrier.py @Time:2021/05/04 07:37 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!"""# 導入線程模塊 import threadingdef plyer_display():print('初始化通過完成,音視頻同步完成,可以開始播放....')# 設置3個障礙對象 barrier = threading.Barrier(3, action=plyer_display, timeout=None)def player_init(statu):print(statu)try:# 設置超時時間,如果2秒內,沒有達到障礙線程數量,# 會進入斷開狀態,引發BrokenBarrierError錯誤barrier.wait(2)except Exception as e: # 斷開狀態,引發BrokenBarrierError錯誤print("等待超時了... ")else:print("xxxooooxxxxxooooxxxoooo")if __name__ == '__main__':statu_list = ["init ready","video ready","audio ready"]thread_list = list()for i in range(0,3):t = threading.Thread(target=player_init,args=(statu_list[i],))t.start()thread_list.append(t)for t in thread_list:t.join()''' 輸出結果:init ready video ready audio ready 初始化通過完成,音視頻同步完成,可以開始播放.... xxxooooxxxxxooooxxxoooo xxxooooxxxxxooooxxxoooo xxxooooxxxxxooooxxxoooo'''

注意:如果 barrier.wait(timeout=None) 等待超時,會進入斷開狀態,引發 BrokenBarrierError 錯誤,為了程序的健壯性,最好加上異常處理;

2.案例二:重置線程障礙數量 reset

# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:猿說編程 @Blog(個人博客地址): www.codersrc.com @File:Python 線程障礙對象 Barrier.py @Time:2021/05/04 07:37 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!"""# 導入線程模塊 import threadingdef plyer_display():print('初始化通過完成,音視頻同步完成,可以開始播放....')# 設置3個障礙對象 barrier = threading.Barrier(3, action=plyer_display, timeout=None)def player_init(statu):while True:print(statu)try:# 設置超時時間,如果2秒內,沒有達到障礙線程數量,# 會進入斷開狀態,引發BrokenBarrierError錯誤barrier.wait(2)except Exception as e: # 斷開狀態,引發BrokenBarrierError錯誤# print("斷開狀態... ")continueelse:print("xxxooyyyxxxooyyyxxxooyyy")breakif __name__ == '__main__':statu_list = ["init ready","video ready","audio ready"]thread_list = list()for i in range(0,3):t = threading.Thread(target=player_init,args=(statu_list[i],))t.start()thread_list.append(t)if i == 1: # 重置狀態print("不想看愛情片,我要看愛情動作片....")barrier.reset()for t in thread_list:t.join()''' 輸出結果:init ready video ready 不想看愛情片,我要看愛情動作片.... init ready video ready audio ready 初始化通過完成,音視頻同步完成,可以開始播放.... xxxooyyyxxxooyyyxxxooyyy xxxooyyyxxxooyyyxxxooyyy xxxooyyyxxxooyyyxxxooyyy'''

注意:如果 barrier.wait(timeout=None) 等待超時,會進入斷開狀態,引發 BrokenBarrierError 錯誤,為了程序的健壯性,最好加上異常處理;

五.猜你喜歡

  • Python 條件推導式
  • Python 列表推導式
  • Python 字典推導式
  • Python 不定長參數 *argc/**kargcs
  • Python 匿名函數 lambda
  • Python return 邏輯判斷表達式
  • Python is 和 == 區別
  • Python 可變數據類型和不可變數據類型
  • Python 淺拷貝和深拷貝
  • Python 異常處理
  • Python 線程創建和傳參
  • Python 線程互斥鎖 Lock
  • Python 線程時間 Event
  • Python 線程條件變量 Condition
  • Python 線程定時器 Timer
  • Python 線程信號量 Semaphore
  • Python 線程障礙對象 Barrier
  • Python 線程隊列 Queue – FIFO
  • Python 線程隊列 LifoQueue – LIFO
  • Python 線程優先隊列 PriorityQueue
  • Python 線程池 ThreadPoolExecutor(一)
  • Python 線程池 ThreadPoolExecutor(二)
  • Python 進程 Process 模塊
  • Python 進程 Process 與線程 threading 區別
  • Python 進程間通信 Queue / Pipe
  • Python 進程池 multiprocessing.Pool
  • Python GIL 鎖
  • 未經允許不得轉載:猿說編程 ? Python 線程障礙對象 Barrier

    總結

    以上是生活随笔為你收集整理的Python 线程障碍对象 Barrier - Python零基础入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美3p在线观看 | 91自啪| 日日操日日摸 | 五月婷婷免费视频 | 国产一级特黄 | 亚洲中文字幕一区二区 | 欧美20p| 林雅儿欧洲留学恋爱日记在线 | 性欧美www| 色吧综合网| 欧美成人xxx | 高清欧美性猛交xxxx | 欧美色欧美色 | 免费在线观看黄网站 | 国产高清视频免费观看 | 夫妻性生活自拍 | 精品国产午夜福利 | 麻豆射区 | 涩涩涩涩涩涩涩涩涩 | 野花av| 日本成人片在线 | 狠狠艹av | 国产永久免费 | 美女搞黄视频网站 | 精品久久在线 | 亚洲女人天堂网 | 久草免费资源站 | 久久人体 | 91av国产视频 | 日韩黄网站 | 国产91精品久久久 | 天天爽夜夜爽夜夜爽 | 91国产视频在线 | 青青青草视频 | 国产淫| 欧美日韩在线视频观看 | 白丝一区 | 日韩丝袜一区 | 九一国产在线 | 日韩精选av| 日韩欧美理论 | 青青草视频播放器 | 一区二区亚洲 | 成人v片| 成人亚洲精品 | 国产毛片一区 | 久久久久久久久久福利 | 国产一区二区三区四区在线观看 | 日韩资源在线 | 天堂中文在线资 | 午夜精品毛片 | 红猫大本营在线观看的 | 一区二区欧美在线 | 欧美大白屁股 | 久久调教视频 | 国产毛片毛片毛片毛片毛片 | 国产乱妇无码大片在线观看 | 在线欧美a| 国产精品一区二区三区在线看 | 男女插插插网站 | av综合在线观看 | 在线欧美国产 | jzz国产| 亚洲黄色a级片 | 麻豆视频在线观看 | 国产精品久久久久久吹潮 | 久热最新视频 | 国产精品69久久久久 | 日本夫妻性生活视频 | 青草伊人久久 | 亚洲av成人无码久久精品 | 五十路六十路七十路熟婆 | 欧美日韩一区二区精品 | 亚洲一级二级 | 91视色| 怡红院久久 | 黄色福利网 | 五月天小说网 | 久久久无码一区二区三区 | 国产一级一片免费播放 | 久久亚洲网 | 国产三级直播 | 免费国偷自产拍精品视频 | 亚洲视频第一页 | 丰满人妻一区二区三区精品高清 | 日本黄色大片在线观看 | 成人p站在线观看 | 黄色一级网址 | 一区二区三区在线视频免费观看 | 精品午夜视频 | 双性受孕h堵精大肚生子 | 欧美日韩在线免费播放 | av黄色av| 热久久伊人 | 欧美一区二区在线观看视频 | 日本裸体xx少妇18在线 | 午夜久久一区 | 软萌小仙自慰喷白浆 | 免费在线成人av |