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)