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
  • 相关阅读:
    Vue学习路线
    国庆游
    Axure RP 9 Beta 开放下载(更新激活密钥和汉化包)
    python虚拟环境
    异步任务神器 Celery-入门
    pymysql操作mysql
    安装 RabbitMQ
    GIT工作流
    flask入门与发送邮件与QQ邮箱
    Mysql第一周
  • 原文地址:https://www.cnblogs.com/weihengblog/p/8659405.html
Copyright © 2011-2022 走看看