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