• 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
  • 相关阅读:
    在IE中下载Office2007文件时在对话框中下载文件变成ZIP文件的问题
    异常:tomcat与windows时间不同步
    centos 解决"不在 sudoers 文件中。此事将被报告"的问题
    linux device drivers
    linux device drivers
    linux device drivers
    Source Insight 空格和Tab出现乱码
    光和颜色
    RTOS Thread stack and MSP/PSP registers in ARM Cortex-M3
    Keil MDK编译出现Error: L6405E
  • 原文地址:https://www.cnblogs.com/weihengblog/p/8659405.html
Copyright © 2020-2023  润新知