队列queue
队列是一种容器,可以将数据放入队列中,也可以从队列中取数据,其实列表也是一种容器,为什么不用列表存数据,而要用队列存数据呢,他们的主要区别在于队列是放入的数据再取出后,队列中就没有这个数据了,而从列表中取数据后在列表中这个数据还是存在的。
队列的存取顺序有:
- class
queue.Queue(maxsize=0) #先入先出
- class
queue.LifoQueue(maxsize=0) #last in fisrt out 后进先出 - class
queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列
#!/usr/bin/env python # -*- coding:utf-8 -*- import Queue q = Queue.Queue()#这种写法是在python2.x中,在python3.x中全部改成小写。 q.put(1) q.put(2) q.put(3) print q.get() print q.get() print q.get()
队列主要用在消费者和生产者模型中。
生产者和消费者示例:
import time,random
import queue,threading
q = queue.Queue()
def Producer(name):
count = 0
while count <20:
time.sleep(random.randrange(3))
q.put(count)
print('Producer %s has produced %s baozi..' %(name, count))
count +=1
def Consumer(name):
count = 0
while count <20:
time.sleep(random.randrange(4))
if not q.empty():
data = q.get()
print(data)
print('\033[32;1mConsumer %s has eat %s baozi...\033[0m' %(name, data))
else:
print("-----no baozi anymore----")
count +=1
p1 = threading.Thread(target=Producer, args=('A',))
c1 = threading.Thread(target=Consumer, args=('B',))
p1.start()
c1.start()
浙公网安备 33010602011771号