zoukankan      html  css  js  c++  java
  • 生产者消费者模式-->线程

    #_author:来童星
    #date:2019/12/17
    #生产者消费者模式-->线程
    from queue import Queue
    import random,time,threading
    #生产者
    class Producer(threading.Thread):
    def __init__(self,name,queue):
    threading.Thread.__init__(self,name=name)
    self.data=queue
    def run(self):
    for i in range(5):
    print('生产者%s将产品%d加入队列!'%(self.getName(),i))
    self.data.put(i)
    time.sleep(random.random())
    print('生成者%s完成'%self.getName())
    #消费者
    class Consumer(threading.Thread):
    def __init__(self, name, queue):
    threading.Thread.__init__(self, name=name)
    self.data = queue

    def run(self):
    for i in range(5):
    val=self.data.get()
    print('消费者%s将产品%d从队列中取出!' %(self.getName(), val))
    time.sleep(random.random())
    print('消费者%s完成' % self.getName())
    if __name__=='__main__':
    print('主进程开始')
    q=Queue()
    producer=Producer('Producer',q)
    consumer=Consumer('Consumer',q)
    producer.start()
    consumer.start()
    producer.join()
    consumer.join()
    print('主进程结束')



    运行结果:
    主进程开始
    生产者Producer将产品0加入队列!
    消费者Consumer将产品0从队列中取出!
    生产者Producer将产品1加入队列!
    消费者Consumer将产品1从队列中取出!
    生产者Producer将产品2加入队列!
    生产者Producer将产品3加入队列!
    消费者Consumer将产品2从队列中取出!
    生产者Producer将产品4加入队列!
    生成者Producer完成
    消费者Consumer将产品3从队列中取出!
    消费者Consumer将产品4从队列中取出!
    消费者Consumer完成
    主进程结束
  • 相关阅读:
    spring-boot 访问时,加与不加项目名分析
    关于文章
    随笔
    工作小结五
    《文章翻译》PCA&SVD
    工作小结四
    工作小结三
    从零开始实现SSD目标检测(pytorch)(一)
    工作小结二
    《论文翻译》 GIOU
  • 原文地址:https://www.cnblogs.com/startl/p/12054886.html
Copyright © 2011-2022 走看看