• python 队列


    队列简单使用:

    # -*- coding: utf-8 -*-
    
    '''
    队列的作用: 1. 解耦
                2. 提高效率
                
    queue.Queue() 先进先出
    queue.LifoQueue() 后进先出
    queue.priorityQueue() 设置优先级的队列
     
    Queue.put(item,block=True,timeout=None) 放数据
    Queue.full()  判断队列是否是满的
    Queue.empty() 判断队列是否为空
    Queue.qsize() 队列大小 
    Queue.get() 取队列中的数据, 如果队列中没有数据 将会卡住
    Queue.get_nowait() 也是取队列中的数据,区别是当队列没有数据,就会抛出异常,相当于Queue.get(block=false)
    
    
    '''
    
    import queue
    
    #默认没有限制大小
    q = queue.Queue()
    q.put("d1")
    q.put("d2")
    q.put("d3")
    
    
    #输出queue 大小
    print(q.qsize())
    
    #取数据
    print(q.get())
    print(q.get())
    print(q.get_nowait())
    
    
    print("------------------")
    q2 = queue.LifoQueue()
    q2.put("f1")
    q2.put("f2")
    q2.put("f3")
    
    print(q2.qsize())
    
    
    print(q2.get())
    print(q2.get())
    print(q2.get_nowait())
    
    
    print("******************")
    q3= queue.PriorityQueue()
    
    q3.put((3,"p1"))
    q3.put((1,"p2"))
    q3.put((2,"p3"))
    print(q3.get())
    print(q3.get())
    print(q3.get())

    实现生产者消费者:

    # -*- coding: utf-8 -*-
    import threading
    import queue
    import time
    
    q  = queue.Queue(10)
    def  producer(name):
        count=1
        while True:
            q.put("包子 %s"%(count))
            print("生成了包子  ",count)
            count+=1
            time.sleep(1)
            
    def consumer(name):
    #     while q.qsize()>0:
        while True:
            print("%s 吃包子 %s"%(name ,q.get()))
            time.sleep(1)
            
    
    p = threading.Thread(target=producer,args=("xiaoqiang",))
    c = threading.Thread(target=consumer,args=("wangwang",))
    c1 = threading.Thread(target=consumer,args=("wangcai",))
    p.start()
    c.start()
    c1.start()
  • 相关阅读:
    专利申请流程
    安装Fedora16与Windows7共存双系统
    rpm检查依赖性
    C++中的static函数和extern关键字
    asp.net 浏览服务器文件
    如何用批处理文件写:获取当前日期的前一天
    有一个无效 SelectedValue,因为它不在项目列表中。
    .net 4.0 检测到有潜在危险的 Request.Form 值。
    ckeditor 在C#中使用
    使用任务计划程序自动执行任务
  • 原文地址:https://www.cnblogs.com/gaizhongfeng/p/8026834.html
Copyright © 2020-2023  润新知