zoukankan      html  css  js  c++  java
  • Python 队列

    一、队列

    队列是一种先进先出的数据结构,是线程间最常用的交换数据的形式。Queue提供了队列操作模块。

    二、队列的基本操作

    import queue
    
    q = queue.Queue(maxsize=10) #可以是指队列长度,默认无限
    
    q.put(1)
    q.put(2)
    q.put(3)
    q.put(4)
    q.put(5)
    q.put(6)
    q.put(7)
    q.put(8)
    q.put(9)
    q.put(10)
    # q.put(11) 会阻塞,直到队列中空出一个元素
    print(q.full()) #判断队列是否已满 True
    print(q.empty()) #判断队列是否为空 False
    print(q.get()) #获取队列的元素 1
    print(q.get()) #2
    队列的基本操作

    三、使用队列实现两个子进程之间的通信

    from multiprocessing import Process
    from multiprocessing import Queue
    
    def producer(q):
        q.put('hello')
    
    def castumer(q):
        print(q.get())
    
    
    if __name__ == '__main__':
        q = Queue()
        p = Process(target=producer,args=(q,))
        p.start()
    
        c = Process(target=castumer,args=(q,))
        c.start()

    四、使用队列实现生产者和消费者

    import time
    from multiprocessing import Process,Queue
    
    #生产者 负责生产
    def producer(name,food,q):
        for i in range(10):
            f = '做了%s个%s'%(i,food)
            print(f)
            q.put(f)  #然后放入队列
    
    def customer(name,q):
        while True:
            food = q.get()  #消费者负责消费
            if food is None: 
                print('%s获得了空'%(name))
                break
            print('%s吃了%s'%(name,food))
    
    if __name__ == '__main__':
    
        q = Queue()
        p = Process(target=producer,args=('老王','包子',q))
        p.start()
    
    
        c = Process(target=customer,args=('张三',q))
        c.start()
    
        p.join()
        q.put(None)
    使用Queue
  • 相关阅读:
    正则表达式 之领宽断言
    bat(续七)-for语句(循环结构)
    RBAC权限管理
    Redis缓存服务搭建及实现数据读写
    Myeclipse集成Maven(图文说明)
    实习第四周
    POJ 3461 Oulipo KMP算法题解
    原创文章
    apue和unp的学习之旅07——多种边界条件的讨论
    单链表的实现
  • 原文地址:https://www.cnblogs.com/weihengblog/p/8659405.html
Copyright © 2011-2022 走看看