(15)Condition条件

功能:也是通过阻塞控制线程数量.类似信号量\进程池\线程池的作用

语法:wait

from threading import Condition

con= Condition()

conn.acquire()

conn.wait() 也可以传参指定等待时间,不传参相当于阻塞,根据notify数量放行

wait下面写上相应逻辑代码

con.release()

 

#语法: notify 使用前后加阻塞

con.acquire()

con.notify(5) 括号内自定义线程放行的数量,默认放行1个

con.release()

 

from threading import Condition, Thread

def func(con, index):

print("%s在等待" % index)

con.acquire()

# 添加阻塞

con.wait()

print("%s do everyting" % index)

con.release()

con = Condition()

for i in range(10):

t = Thread(target=func, args=(con, i))

t.start()

# 写法一

# con.acquire()

# con.notify(5) # 默认放行1个(不加参数)

# con.release()

# 写法二 :动态控制放行数量

count = 10

while count > 0:

num = int(input(">>>"))

con.acquire()

# 放行线程 num 动态赋予的值

con.notify(num)

con.release()

count -= num

 

猜你喜欢

转载自www.cnblogs.com/lyj910313/p/10787336.html