zoukankan      html  css  js  c++  java
  • python-多线程3-生产者消费者

    '''生产者和消费者'''
    '''
    用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个

    好难........搞晕了

  • 相关阅读:
    《大道至简》读后感
    周报告
    关于大脑休息之睡觉与冥想方式对比
    大数据之实验6
    学习进度(16)
    软件工程—个人课程总结
    学习进度(15)
    人月神话阅读笔记03
    学习进度(14)
    软件工程—个人作业(8)
  • 原文地址:https://www.cnblogs.com/R-bear/p/7031722.html
Copyright © 2011-2022 走看看