線程和進程中使用的隊列

線程和進程中使用的隊列

隊列線程之間的通訊 隊列線程是安全的,不用加鎖html

一、先進先出隊列

【1】
from queue import Queue # 先進先出隊列
q = Queue(5)
q.put(0)
q.put(1)
q.put(2)
q.put(3)
q.put(4)
print('444444')
q.put(5)
print("55555")
---------------結果:
444444
隊列滿了放不進5,而後阻塞住了。
【2】
from queue import Queue # 先進先出隊列
q = Queue(5)
q.put(0)
q.put(1)
q.put(2)
q.put(3)
q.put(4)
print(q.get()) #0
print(q.get())#1
print(q.get())#2
print(q.get())#3
print(q.get())#4
print(q.get())
------------結果:
0
1
2
3
4
隊列空了沒有數據可拿了,第6個get阻塞住了算法

二、後進先出隊列

from queue import LifoQueue # 後進先出隊列
#last in first out 棧
lfq = LifoQueue(4)
lfq.put(1)
lfq.put(3)
lfq.put(2)
print(lfq.get())
print(lfq.get())
print(lfq.get())
------------結果:
2
3
1安全

小結:
#先進先出
# 寫一個server,全部的用戶的請求放在隊列裏(誰先來就讓它先作後面的操做)
# 先來先服務的思想
#後進先出
# 算法
#(那個三級菜單也是)spa

三、優先級隊列

按照元組的第一個元素大小來排列取值的線程

from queue import PriorityQueue
pq = PriorityQueue()
pq.put((10, '小馬'))
pq.put((5, '小馮'))
pq.put((1, '小郭'))
print(pq.get())
print(pq.get())
t=pq.get()
print(t,type(t))
-----------結果:
(1, '小郭')
(5, '小馮')
(10, '小馬') <class 'tuple'>orm

小結:三個隊列的使用場景
#先進先出
# 寫一個server,全部的用戶的請求放在隊列裏(誰先來就讓它先作後面的操做)
# 先來先服務的思想
#後進先出
# 算法
#(那個三級菜單也是)
優先級隊列
# 自動的排序
# 搶票的用戶級別 100000 100001
# 告警級別server

相關文章
相關標籤/搜索