python-多线程-生产者消费者

‘’‘生产者和消费者’’’
‘’’
用python写一个多线程的生产者和消费者
生产者x x>0,有东西,print(不生产) x=0,没东西,print(生产) for循环
消费者x x=0,没东西,print(不消费) x>0,有东西,print(消费) for循环
分别封装成class
‘’’

import threading

class Producer(threading.Thread):
    def __init__(self,name):
        threading.Thread.__init__(self)
        self.name = name
    
    def run(self):
        global x
        
        tt.acquire()
        
        if x>0:
            #print("我已经生产完毕了,你随意去吧")
            tt.wait()
        else:
            for i in range(5):
                x=x+1
                print("%s在生产中,第%d个"%(self.name,x))#线程的名字
        tt.release()
    



class Consumer(threading.Thread):
    def __init__(self,name):
        threading.Thread.__init__(self)
        self.name = name
        
    def run(self):
        global x
        
        tt.acquire()
        
        if x==0:
            #print("没东西了")
            tt.wait()
        else:
            for i in range(5):
                x=x-1
                print("%s在消费中,第%d个"%(self.name,x+1))
        tt.release()

x = 0

#tt = threading.Lock()
tt = threading.Condition()

p = Producer("producer")


c = Consumer("consumer")


p.start()
c.start()

p.join()
c.join()

输出:
producer在生产中,第1个
producer在生产中,第2个
producer在生产中,第3个
producer在生产中,第4个
producer在生产中,第5个
consumer在消费中,第5个
consumer在消费中,第4个
consumer在消费中,第3个
consumer在消费中,第2个
consumer在消费中,第1个
参考网址:https://www.cnblogs.com/R-bear/p/7031722.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值