1、Python提供的Condition對(duì)象支持復(fù)雜的線程同步。
2、Condition被稱為條件變量,除了提供類似Lock的acquire和release方法外,還提供wait和notify方法。線程先acquire條件變量,然后判斷一些條件。
實(shí)例
importthreading,time
classHider(threading.Thread):
def__init__(self,cond,name):
super(Hider,self).__init__()
self.cond=cond
self.name=name
defrun(self):
time.sleep(1)#確保先運(yùn)行Seeker中的方法
self.cond.acquire()#b
print(self.name+':我已經(jīng)把眼睛蒙上了')
self.cond.notify()
self.cond.wait()#c
#f
print(self.name+':我找到你了~_~')
#self.cond.notify()
self.cond.release()
#g
print(self.name+':我贏了')#h
classSeeker(threading.Thread):
def__init__(self,cond,name):
super(Seeker,self).__init__()
self.cond=cond
self.name=name
defrun(self):
self.cond.acquire()
self.cond.wait()#a#釋放對(duì)瑣的占用,同時(shí)線程掛起在這里,直到被notify并重新占有瑣。
#d
print(self.name+':我已經(jīng)藏好了,你快來(lái)找我吧')
self.cond.notify()
self.cond.wait()#e
#h
self.cond.release()
print(self.name+':被你找到了,哎~~~')
cond=threading.Condition()
seeker=Seeker(cond,'seeker')
hider=Hider(cond,'hider')
seeker.start()
hider.start()
以上內(nèi)容為大家介紹了python培訓(xùn)之condition條件變量的作用,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。