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-------------------')
    

      

  • 相关阅读:
    AJAX 大全
    has value '1.8', but '1.7' is required
    VS2010官方下载地址
    win10桌面显示我的电脑
    使用 CAST
    for循环+canvas实现黑客帝国矩形阵
    C# Lambda
    win7系统部分便笺的元数据已被损坏怎么恢复
    SQL查询所有表,所有列
    truncate和delete之间有什么区别
  • 原文地址:https://www.cnblogs.com/GumpYan/p/12960514.html
Copyright © 2011-2022 走看看