• python学习笔记 day39 队列


    1. 队列

    import queue
    q=queue.Queue()  # 线程安全的,队列是先进先出FIFO
    q.put("hello")   #
    q.put("xuanxuan")
    print(q.qsize())  # 获得队列的大小
    print(q.get())  # FIFO  所以先打印hello
    print(q.get())

    运行结果:

    2. LOFI后进先出的队列---栈

    import queue
    q=queue.LifoQueue()   # LIFO后进先出的队列----栈
    q.put("hello")
    q.put("xuanxuan")
    print(q.qsize())  # 获得队列的大小
    print(q.get())  # LifoQueue()是LIFO模型后进先出,所以先打印xuanxuan
    print(q.get())

    运行结果:


     3. 带有优先级的队列

    import queue
    q=queue.PriorityQueue()  # 带有优先级的队列
    q.put((10,"hello"))      # put()需要接收一个元组(第一个参数是优先级,第二个是所要传的内容)
    q.put((4,"xuanxuan"))
    q.put((2,"嘻嘻"))  # 数字越小,代表优先级越高,get()时越会被优先打印
    print(q.qsize())   # 打印带有优先级队列的长度
    print(q.get())
    print(q.get())
    print(q.get())

     运行结果:

     4. 使用多线程借助队列实现生产者消费者模型

    import queue
    from threading import Thread
    import time
    import random
    def procuder(name,food):
        for i in range(10):
            q.put((food,i))
            # q.put((i,(food,i)))  # 如果使用的是带有优先级的队列
            print("%s生产%s--%s"%(name,food,i))
    
    def consumer(name):
        time.sleep(random.random())
        food,i=q.get()
        print("%s消费了%s"%(name,food))
    
    q=queue.Queue()
    # q=queue.LifoQueue()  # 后进先出的队列
    # q=queue.PriorityQueue()  # 传参时需要传一个元组(第一个参数时优先级,第二个参数是内容)
    t1=Thread(target=procuder,args=("xuanxuan","酸奶酪"))  # 创建一个线程执行生产者--procuder
    t1.start()
    
    for i in range(10):
        t=Thread(target=consumer,args=(i,))  # 创建10个线程执行consumer消费者
        t.start()

    运行结果:

    talk is cheap,show me the code
  • 相关阅读:
    Egg 中使用 Mongoose 以及 Egg 中的 model
    Egg.js 中使用第三方插件以及 Egg.js 插件 egg-mongo-native 操作 mongodb 数据库
    egg定时任务
    jsx中给VUE绑定事件
    【T09】要认识到TCP是一个可靠的,但不是绝对可靠的协议
    PostgreSQL 高级SQL(五) 内建窗口函数
    PostgreSQL 高级SQL(四) 滑动窗口函数
    PostgreSQL 高级SQL(三) 窗口函数
    PostgreSQL 高级SQL(二) filter子句
    PostgreSQL 高级SQL(一)分组集
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9794747.html
Copyright © 2020-2023  润新知