码迷,mamicode.com
首页 > 其他好文 > 详细

5.1.18 信号量

时间:2018-06-17 00:13:26      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:spl   print   分享   threading   from   main   ESS   process   递归   

互斥锁和排斥锁  同一时间只能有一个线程处理同一段代码。比如,只有一个坑的卫生间

信号量:同时最多可以有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
View Code

 

5.1.18 信号量

标签:spl   print   分享   threading   from   main   ESS   process   递归   

原文地址:https://www.cnblogs.com/beallaliu/p/9191751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!