from threading import Semaphore,Thread import time,random sm = Semaphore(5) def task(i): sm.acquire()#加锁 print("%s is doing" % i) time.sleep(random.randint(1,3)) print("\n%s is leaving" % i) sm.release()#解锁 if __name__ == "__main__": for i in range(20): p = Thread(target=task,args=(i,)) p.start()
设置Semaphore 即允许同时运行的线程或者进程数,比如总共有十个线程要运行,Semaphore设置为5,则同时运行的为五个
结果:
0 is doing 1 is doing 2 is doing 3 is doing 4 is doing 1 is leaving 5 is doing 2 is leaving 6 is doing 3 is leaving 7 is doing 0 is leaving 8 is doing 5 is leaving 9 is doing 4 is leaving 10 is doing 6 is leaving 11 is doing 7 is leaving 12 is doing 9 is leaving 13 is doing 8 is leaving 14 is doing 13 is leaving 15 is doing 12 is leaving 10 is leaving 11 is leaving 16 is doing 17 is doing 18 is doing 14 is leaving 19 is doing 17 is leaving 15 is leaving 19 is leaving 16 is leaving 18 is leaving
可以看出,只有一个线程运行结束了才能让另一个运行。
线程和进程里的Semaphore运用的方法一样。
热门文章
- 宠物粮厂家招聘最新信息(宠物粮基地)
- VPN加速器 | 3月26日20.4M/S|免费VPN/Shadowrocket/V2ray/Clash/SSR免费节点订阅分享
- VPN加速器 | 3月5日19.6M/S|免费VPN/Clash/V2ray/SSR/Shadowrocket免费节点订阅分享
- 养宠物猫打疫苗多少钱(养猫打疫苗要多少钱)
- 网店卖宠物用品赚钱吗(网店卖宠物用品赚钱吗现在)
- JSON 传输数据出现415错误 Content type ‘application/xml;charset=UTF-8’ not supported
- VPN加速器 | 3月10日22.8M/S|免费VPN/SSR/V2ray/Shadowrocket/Clash免费节点订阅分享
- VPN加速器 | 3月7日19.5M/S|免费VPN/Clash/V2ray/Shadowrocket/SSR免费节点订阅分享
- 动物疫苗有什么用途和作用 动物疫苗有什么用途和作用呢
- 养狗的人容易得15种病怎么预防(养狗人容易得病吗)