什麼是佇列?
佇列就像是水管子,先進先出,與之相對應的是棧,後進先出。
佇列是執行緒安全的,佇列自身有機制可以實現:在同一時刻只有乙個執行緒在對佇列進行操作。
存資料,取資料
1import
queue
23 q = queue.queue() #
呼叫佇列生成物件
4 q.put(1) #
存放第乙個值到佇列
5 q.put(2) #
存放第二個值到佇列67
8print
'get frist one:
',q.get() #
獲取佇列的第乙個值
9print
'get second on:
',q.get() #
獲取佇列的第二個值
如果佇列中的資料被取完了怎麼辦呢?
會阻塞
q = queue.queue() #呼叫佇列生成物件
q.put(1) #
存放第乙個值到佇列
q.put(2) #
存放第二個值到佇列
a = q.get() #
獲取佇列的第乙個值
'get frist one:%s
' %a
b = q.get() #
獲取佇列的第二個值
'get second one:%s
' %b
c = q.get()#
獲取佇列的第三個值
'get third one:%s
' %c
#結果:
'''get frist one:1
get second one:2
#這裡是阻塞狀態,一直在等待著值進來~
'''
取不到值的時候如何能讓它不阻塞?
get_nowait()方法取
複製**q = queue.queue() #
呼叫佇列生成物件
q.put(1) #
存放第乙個值到佇列
q.put(2) #
存放第二個值到佇列
a = q.get() #
獲取佇列的第乙個值
'get frist one:%s
' %a
b = q.get() #
獲取佇列的第二個值
'get second one:%s
' %b
c = q.get_nowait()#
獲取佇列的第三個值 ,使用:get_nowait()
'get third one:%s
' % c
不阻塞的時候,取不到又會報錯,怎麼辦?
異常處理
q = queue.queue() #呼叫佇列生成物件
try:
q.get_nowait()
except
queue.empty as f:
'the queue is empty!'
佇列的長度是可以規定的哦
那麼問題來了,佇列被存滿了怎麼辦?----->會阻塞...
如何能不阻塞?---->put_nowait()----->無法存放會報錯------>報錯怎麼辦?------>異常處理。
q = queue.queue(2) #呼叫佇列生成物件
q.put(1) #
存放第乙個值到佇列
'put value 1 done
'q.put(2) #
存放第二個值到佇列
'put vlaue 2 done
'q.put(3) #
存放第三個值到佇列
'put value 3 done'#
結果:'''
put value 1 done
put vlaue 2 done
#這裡會阻塞,會一直等待~
'''
queue的長度 佇列 Queue
佇列 queue 是先進先出 fifo,first in first out 的線性表。在具體應用中通常用鍊錶或者陣列來實現。佇列只允許在後端 稱為rear 進行插入操作,在前端 稱為front 進行刪除操作。隊結構 迴圈佇列可以更簡單防止偽溢位 假溢位 的發生,但佇列大小是固定的。防止假溢位,如d...
C 中queue(佇列)的用法
include include include include include 或 include queue include queue 定義乙個queue的變數queuem 檢視是否為空範例m.empty 是的話返回1,不是返回0 從已有元素後面增加元素m.push 輸出現有元素的個數m.siz...
C 中queue(佇列)的用法
include include include 呼叫的時候要有標頭檔案 include或 include include include 詳細用法 定義乙個queue的變數 queuem 檢視是否為空範例 m.empty 是的話返回1,不是返回0 從已有元素後面增加元素 m.push 輸出現有元素的...