python多线程Condition代码示例
# -*- coding:utf-8 -*- import threading import time class Producer(threading.Thread): # 生产者函数,重写run()方法 def run(self): global count while True: if con.acquire(): # 当count 小于等于1000 的时候进行生产 if count > 1000: # 当库存已经超过1000,则线程阻塞,等待其它线程notify() con.wait() else: count = count+100 msg = self.name+' produce 100, count=' + str(count) print(msg) # 完成生成后唤醒waiting状态的线程, # 从waiting池中挑选一个线程,通知其调用acquire方法尝试取到锁 con.notify() # 释放acquire()占有的锁 con.release() time.sleep(2) class Consumer(threading.Thread): # 消费者函数,重写run()方法 def run(self): global count while True: # 当count 大于0的时候进行消费 if con.acquire(): if count > 0: count = count-50 msg = self.name+' consume 50, count='+str(count) print(msg) # 完成消费后唤醒waiting状态的线程, # 从waiting池中挑选一个线程,通知其调用acquire方法尝试取到锁 con.notify() else: # 当库存已经没有,则线程阻塞,等待其它线程notify() con.wait() # 释放acquire()占有的锁 con.release() time.sleep(2) count = 0 con = threading.Condition() def main(): # 1生产者线程,3个消费者线程 p = Producer() p.start() for i in range(3): c = Consumer() c.start() if __name__ == '__main__': main()
分类:
Python
标签:
PYTHON Condition
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!