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

 

posted @ 2018-03-27 19:03  短毛兔  阅读(149)  评论(0编辑  收藏  举报