1、先进先出
2、后进先出
3、优先级队列
1、先进先出 代码如下(示例):
from queue import Queue, LifoQueue, PriorityQueue
# 实例化一个队列对象
q = Queue(6)#可以不限制队列大小
# 队列添加数据:put,put_nowait
q.put('python001')
q.put('python006', timeout=3) # 参数timeout 设置等待时间
q.put_nowait('pythhn00000') # 添加数据不等待
#qsize:获取队列中数据的长度
print(q.qsize())
#get: 获取数据
print(q.get())
# 判断队列是否为空
print(q.empty())
# 判断队列是否已满
print(q.full())
"""
task_done: 向队列发送一条任务执行完毕的消息,添加3条数据,就要进行3次task_done,否则join会一直等待。
join: 等待队列中所有的任务是否执行完毕
"""
2、后进先出 代码如下(示例):
from queue import LifoQueue, PriorityQueue
# 后入先出
# q = LifoQueue()
# q.put(11)
# q.put(22)
# print(q.get())
# 优先级队列:(队列中添加的数据为元组,元组的一个值,用来设置队列的优先级)
q = PriorityQueue()
q.put((-15, '9999'))
q.put((77, '9999'))
q.put((4, '9999'))
q.put((99, '9999'))
print(q.get())
print(q.get())
print(q.get())
print(q.get())
案例:
读取txt文件中的url地址,将url地址放入队列中
'''需求:并发读取txt中的URL地址'''
list_test = []
filename = "url.txt"
file = open(filename, "r")
# 列表推导式
list_test = [line.strip("\n") for line in file]
url_list=[q.put(i) for i in list_test]
def url_test():
while not q.empty():
url= q.get()