重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
這篇文章主要介紹了python線程中Condition的原理分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
10余年的南通網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網站的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整南通建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯從事“南通網站設計”,“南通網站推廣”以來,每個客戶項目都認真落實執行。
原理分析
1、Python條件變量Condition需要關聯互斥鎖,同時Condition本身提供了wait、notify、notifyAll方法。
2、用于阻塞、通知其他并行線程,可以訪問共享資源。
Condition提供了一種多線程通信機制。如果線程1需要數據,線程1會堵塞等待,然后線程2會制造數據。線程2制造數據后,通知線程1可以獲取數據,然后線程1會獲取數據。
實例
# !usr/bin/env python # -*- coding:utf-8 _*- # 導入線程模塊 import threading # 創建條件變量condition con = threading.Condition() def thread_one(name): # 條件變量condition 線程上鎖 con.acquire() print("{}:成語接龍準備好了嗎".format(name)) # 喚醒正在等待(wait)的線程 con.notify() # 等待對方回應消息,使用wait阻塞線程,等待對方通過notify喚醒本線程 con.wait() print("{}:一干二凈".format(name)) # 喚醒對方 con.notify() # 等待消息答應 con.wait() print("{}:一天就知道看抖音美女,給你來個簡單點的,來了:毛手毛腳".format(name)) # 喚醒對方 con.notify() # 等待消息答應 con.wait() print("{}:喲喲喲,不錯不錯!".format(name)) # 喚醒對方 con.notify() # 條件變量condition 線程釋放鎖 con.release() def thread_two(name): # 條件變量condition 線程上鎖 con.acquire() # wait阻塞狀態,等待其他線程通過notify喚醒本線程 con.wait() print("{}:準備好了~開始吧!".format(name)) # 喚醒對方 con.notify() # 等待消息答應 con.wait() print("{}:凈你妹啊,沒法接...來個簡單點的...".format(name)) # 喚醒對方 con.notify() # 等待消息答應 con.wait() print("{}:嘿,這個我知道:腳踏實地".format(name)) # 喚醒對方 con.notify() con.release() if __name__ == "__main__": # 創建并初始化線程 t1 = threading.Thread(target=thread_one,args=("A")) t2 = threading.Thread(target=thread_two,args=("B")) # 啟動線程 -- 注意線程啟動順序,啟動順序很重要 t2.start() t1.start() # 阻塞主線程,等待子線程結束 t1.join() t2.join() print("程序結束!") ''' 輸出結果: A:成語接龍準備好了嗎 B:準備好了~開始吧! A:一干二凈 B:凈你妹啊,沒法接...來個簡單點的... A:一天就知道看抖音美女,給你來個簡單點的,來了:毛手毛腳 B:嘿,這個我知道:腳踏實地 A:喲喲喲,不錯不錯! 程序結束! '''
感謝你能夠認真閱讀完這篇文章,希望小編分享的“python線程中Condition的原理分析”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!