首页 / 知识
pythoncondition条件变量的作用
2023-11-12 12:58:00
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如何确定是否为可迭代对象
python如何确定是否为可迭代对象,培训,元素,索引,对象,整数,字典,函数,类型,下标,模块,迭代可以理解为,任意的集合使用for循环遍历python中,迭python怎么调用类方法
python怎么调用类方法,培训,方法,实例,静态,定义,参数,属性,对象,关键字,以上,python中的类用来描述具有相同的属性和方法的对象的集合。它定pythoneval函数作用
pythoneval函数作用,培训,字符串,函数,作用,表达式,对象,结果,引号,计算器,以上,pythoneval(str)函数很强大,官方解释为:将字符串str当成有效的python判断字符串是否为小数的方法
python判断字符串是否为小数的方法,培训,代码,合法,小数点,小数,整数,字符串,方法,右边,左边,python想判断一个字符串是不是一个合法的小数,但python在python中如何同时给多个变
python在python中如何同时给多个变量赋值?,培训,连续,名称,赋值,变量,函数,模块,整数,定义,常量,同时赋多个值以下是一种很酷的编程捷径:在Pytpython字符串拼接有哪些方法?
python字符串拼接有哪些方法?,培训,一致,字符串,位置,异常,结果,方式,方法,字符,参数,python拼接字符串一般有以下几种方法:①直接通过(+)操作python创建多线程的两种方法
python创建多线程的两种方法,培训,第一,代码,业务,方法,线程,函数,任务,演示,实例,当我们使用python编程的过程中需要多个输出的任务的话,为了python有哪些大小写转换方法
python有哪些大小写转换方法,培训,字符串,方法,字符,字母,大写字母,大小写,长度,单词,大小,python中有哪些大小写转换方法1、lower()方法,大写python内置作用域是什么
python内置作用域是什么,代码,培训,标准,功能,作用,变量,模块,函数,放入,外部,python内置作用域是什么1、说明它是通过一个标准模块叫做builtpython创建新线程有哪些方法
python创建新线程有哪些方法,培训,方法,线程,对象,测试,实例,以上,参数,教程,更多,python创建新线程有哪些方法1、方法(1)直接创建threading.