zoukankan      html  css  js  c++  java
  • 生产者与消费者(两个线程之间的通信---队列实现)

    python的queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue和优先级队列PriorityQueue。这些队列都实现了锁原理(可以理解为原子操作,即要么不做,要么就做完),能够在多线程中直接使用,可使用队列来实现线程间的同步。

     

    import threading
    import queue
    import random
    import time
    
    
    def produce(q):
        i = 0
        while i < 10:
            num = random.randint(1, 100)
            q.put("生产者产生数据:%d" % num)
            print("生产者产生数据:%d" % num)
            time.sleep(1)
            i += 1
        q.put(None)
        # 完成任务
        q.task_done()
    
    
    def consume(q):
        while True:
            item = q.get()
            if item is None:
                break
            print("消费者获取到:%s" % item)
            time.sleep(4)
        # 完成任务
        q.task_done()
    
    
    if __name__ == '__main__':
        q = queue.Queue(10)
    
        # 创建生产者
        th = threading.Thread(target=produce, args=(q,))
        th.start()
    
        # 创建消费者
        tc = threading.Thread(target=consume, args=(q,))
        tc.start()
    
        th.join()
        tc.join()
    
        print('-----------END-------------------')
    

      

  • 相关阅读:
    SC || Git 相关知识
    SC || Chapter 1
    SC || 解决在git中上传过大文件的问题(如何将提交过的彻底删除
    SC || 那些CheckStyle中的错误们
    纯c实现字符串切割
    c++实现字符串切割
    频域滤波
    空间域滤波
    卷积的理解
    频域分析相关概念
  • 原文地址:https://www.cnblogs.com/GumpYan/p/12960514.html
Copyright © 2011-2022 走看看