新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:python線程中Condition的原理
原理分析

1、Python條件變量condition需要關(guān)聯(lián)互斥鎖,同時Condition本身提供了wait、notify、notifyAll方法。
2、用于阻塞、通知其他并行線程,可以訪問共享資源。
Condition提供了一種多線程通信機制。如果線程1需要數(shù)據(jù),線程1會堵塞等待,然后線程2會制造數(shù)據(jù)。線程2制造數(shù)據(jù)后,通知線程1可以獲取數(shù)據(jù),然后線程1會獲取數(shù)據(jù)。
實例
# !usr/bin/env python
# -*- coding:utf-8 _*-
# 導(dǎo)入線程模塊
import threading
# 創(chuàng)建條件變量condition
con = threading.Condition()
def thread_one(name):
# 條件變量condition 線程上鎖
con.acquire()
print("{}:成語接龍準備好了嗎".format(name))
# 喚醒正在等待(wait)的線程
con.notify()
# 等待對方回應(yīng)消息,使用wait阻塞線程,等待對方通過notify喚醒本線程
con.wait()
print("{}:一干二凈".format(name))
# 喚醒對方
con.notify()
# 等待消息答應(yīng)
con.wait()
print("{}:一天就知道看抖音美女,給你來個簡單點的,來了:毛手毛腳".format(name))
# 喚醒對方
con.notify()
# 等待消息答應(yīng)
con.wait()
print("{}:喲喲喲,不錯不錯!".format(name))
# 喚醒對方
con.notify()
# 條件變量condition 線程釋放鎖
con.release()
def thread_two(name):
# 條件變量condition 線程上鎖
con.acquire()
# wait阻塞狀態(tài),等待其他線程通過notify喚醒本線程
con.wait()
print("{}:準備好了~開始吧!".format(name))
# 喚醒對方
con.notify()
# 等待消息答應(yīng)
con.wait()
print("{}:凈你妹啊,沒法接...來個簡單點的...".format(name))
# 喚醒對方
con.notify()
# 等待消息答應(yīng)
con.wait()
print("{}:嘿,這個我知道:腳踏實地".format(name))
# 喚醒對方
con.notify()
con.release()
if __name__ == "__main__":
# 創(chuàng)建并初始化線程
t1 = threading.Thread(target=thread_one,args=("A"))
t2 = threading.Thread(target=thread_two,args=("B"))
# 啟動線程 -- 注意線程啟動順序,啟動順序很重要
t2.start()
t1.start()
# 阻塞主線程,等待子線程結(jié)束
t1.join()
t2.join()
print("程序結(jié)束!")
'''
輸出結(jié)果:
A:成語接龍準備好了嗎
B:準備好了~開始吧!
A:一干二凈
B:凈你妹啊,沒法接...來個簡單點的...
A:一天就知道看抖音美女,給你來個簡單點的,來了:毛手毛腳
B:嘿,這個我知道:腳踏實地
A:喲喲喲,不錯不錯!
程序結(jié)束!
'''以上就是python線程中Condition的原理,希望對大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
分享標題:創(chuàng)新互聯(lián)Python教程:python線程中Condition的原理
本文地址:http://www.5511xx.com/article/djseios.html


咨詢
建站咨詢
