5.1.18 信号量
Posted beallaliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.1.18 信号量相关的知识,希望对你有一定的参考价值。
互斥锁和排斥锁 同一时间只能有一个线程处理同一段代码。比如,只有一个坑的卫生间
信号量:同时最多可以有N个线程同时处理同一段代码。 比如有3个坑的卫生间,最多可以有三个人同时使用。
from threading import Semaphore from threading import Thread import time def task(name): sm.acquire() print(‘%s 正在占坑。。。‘ % name) time.sleep(2) sm.release() if __name__ == ‘__main__‘: sm = Semaphore(3) # 有三个坑的锁 , 排斥锁和递归锁只有一个坑的锁 # t_1 = [] for i in range(10): t = Thread(target=task, args=(‘线程‘+str(i),)) # t_1.append(t1) t.start()
运行结果:
线程0 正在占坑。。。
线程1 正在占坑。。。
线程2 正在占坑。。。
线程3 正在占坑。。。
线程5 正在占坑。。。
线程4 正在占坑。。。
线程7 正在占坑。。。
线程8 正在占坑。。。
线程6 正在占坑。。。
线程9 正在占坑。。。
Process finished with exit code 0
以上是关于5.1.18 信号量的主要内容,如果未能解决你的问题,请参考以下文章