首页 > 代码库 > python 线程之threading(五)
python 线程之threading(五)
在学习了Event和Condition两个线程同步工具之后还有一个我认为比较鸡肋的工具 semaphores
1. 使用semaphores的使用效果和Condition的notify方法的效果基本相同。每次只能通知一个阻塞线程继续运行
2. 信号量同步基于内部计数器,每调用一次acquire(),计数器减1;每调用一次release(),计数器加1.当计数器为0时,acquire()调用被阻塞
1 import threading 2 import time 3 4 def countdown(n, sema): 5 while n > 0: 6 n -= 1 7 sema.acquire() 8 print(‘current countdown:‘,n) 9 10 11 def countup(n, sema): 12 while n < 100: 13 n += 1 14 sema.acquire() 15 print(‘current countup:‘,n) 16 17 sema = threading.Semaphore() 18 threading.Thread(target=countdown,args=(100, sema)).start() 19 threading.Thread(target=countup,args=(0, sema)).start() 20 for i in range(100): 21 sema.release() 22 time.sleep(3)
python 线程之threading(五)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。