194
1、Python提供的Condition对象支持复杂的线程同步。
2、Condition被称为条件变量,除了提供类似Lock的acquire和release方法外,还提供wait和notify方法。线程先acquire条件变量,然后判断一些条件。
实例
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)#确保先运行Seeker中的方法 self.cond.acquire()#b print(self.name+':我已经把眼睛蒙上了') 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#释放对琐的占用,同时线程挂起在这里,直到被notify并重新占有琐。 #d print(self.name+':我已经藏好了,你快来找我吧') 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()
以上就是python中condition条件变量的作用,希望对大家有所帮助。更多Python学习指路:Python基础教程