1. 程式人生 > >02 執行緒佇列

02 執行緒佇列

 

import queue


# 一:先進先出佇列
# q = queue.Queue(3)  #先進先出 fifo first in first out
# q.put(1)
# q.put(2)
# # print('當前佇列內容長度',q.qsize())
# q.put(3)
# print('檢視佇列是否滿了',q.full())
# try:
#     q.put_nowait(4)  # 報錯queue.Full
# except Exception:
#     print('佇列滿了')
# print(q.get())
# print(q.get())
# print('檢視佇列是否為空',q.empty())
# print(q.get())
# print('檢視佇列是否為空',q.empty())
# try:
#     q.get_nowait()  # queue.Empty
# except Exception:
#     print('佇列空了')

# 二 先進後出佇列,或者後進先出,類似於棧
# q = queue.LifoQueue(3)
#
# q.put(1)
# q.put(2)
# q.put(3)
#
# print(q.get())
# print(q.get())
# print(q.get())


#優先順序佇列
q = queue.PriorityQueue(5)
# q.put((5,'alex'))
# q.put((2,'寶寶'))
# q.put((7,'大力'))

# q.put((5,(2,3)))
q.put((5,(2,3)))  #如果說值裡面的元素是數字型別,那麼當兩個值的優先順序相同時,比較的是兩個值的大小,小的優先被取出來
#如果元素是字串,那麼依次比較每個字母的ascii表中的位置,小的優先被取出來
# q.put((2,{'x':3}))
# q.put((5,(1,2)))
q.put((5,(2,2,3)))
# q.put((2,'zalex'))
# q.put((-1,'yubing'))
# q.put((2,{'k':666})) #如果優先順序數字相同,如果資料型別不同會報錯
# q.put((2,('a','b')))
# q.put((1,(1,2)))
# q.put((3,(1,2)))
# q.put((-10,(1,2)))
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())