python 如何取队列前两点_python_队列

本文详细介绍了Python中队列的区别与使用,包括先进先出的Queue、后进先出的LifoQueue和优先级队列PriorityQueue。并利用队列与多线程实现了一个简单的生产者消费者模型。
摘要由CSDN通过智能技术生成

一、队列和列表的区别

1.队列是先进先出,列表可以读取某个指定数据

2.队列如果将储存的数据都读完就结束,列表可以反复读取

例如:

#列表指定读取某个 数据

a_list = [1,2,3,4]

print(a_list[2])

import queue

#先进先出

a_queue = queue.Queue()

for i in range(1,5):

a_queue.put(i)

while a_queue.qsize()>0:

print(a_queue.get())

二、具体介绍一下queue

在使用queue的时候要先引入queue模块,创建对象~

其中queue可以创建出三种对象分别是

1.先进先出行Queue(maxsize = ?)

import queue

a_queue =queue.Queue()

a_queue.put("1")

a_queue.put("2")

print(a_queue.get(),a_queue.get())

>>>1 2

通过上面的例子我们能发现,put 方法是往队列放数据,但是队列跟列表不同取完之后数据就没有了,如果取的数据大于列表存放的数据就会卡住这时候有两种解决办法,第一种调用get_nowait()方法,这时候就会报异常queue.Empty,第二种就是从get自身解决,get(block = False),默认的时候block是True。

2.后进先出LifeQueue()是个缩写是Last in first out

import queue

a_queue =queue.LifoQueue()

for i in range(2):

a_queue.put(i)

while 0

print(a_queue.get())

>>>

1

0

3.priorityQueue可以理解成vip,看你的心情让那先出就先出

import queue

a_queue =queue.PriorityQueue()

a_queue.put((3,"d"))

a_queue.put((1,"a"))

a_queue.put((2,"c"))

while a_queue.qsize()>0:

print(a_queue.get())

>>>

(1, 'a')

(2, 'c')

(3, 'd')

三、利用queue和多线程写一个生产者消费者

import queue

import threading,time

q= queue.Queue(maxsize=10)

def Producer():

for i in range(10):

q.put("生产第%s骨头"%i)

time.sleep(0.1)

def Consumer(name):

while True:

try:

print(name,"吃掉了【%s】"%q.get(timeout=0.4))

except:

break

t = threading.Thread(target=Producer)

c = threading.Thread(target=Consumer,args=("小黄",))

c1 = threading.Thread(target=Consumer,args=("小hei",))

t.start()

c.start()

c1.start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值