1.佇列
from multiprocessing import結果:queue
q = queue(5) #
建立佇列物件,佇列大小為5,佇列中只能存放5個元素
q.put(1) #
往佇列中新增元素
q.put(2)
q.put(3)
q.put(4)
q.put(5)
print(q.full()) #
檢測佇列是否滿了~
print(q.get()) #
取出佇列中的值
(q.get())
(q.get())
(q.get())
(q.get())
print(q.empty()) #
檢測佇列是否為空
如果佇列中的值滿了,繼續用put()方法往佇列中新增元素,則會阻塞,
如果隊列為空,繼續用get()方法取佇列中的元素,同樣也會阻塞。
get_nowait()方法:
返回q中的乙個項,如果q為空此方法則阻塞,知道佇列中有專案可以用為止。
用於控制阻塞行為,預設為true,如果設定為false,將引發queue.empty異常。
from multiprocessing import結果:queue
q = queue(5) #
建立佇列物件,佇列大小為5,佇列中只能存放5個元素
q.put(1) #
往佇列中新增元素
q.put(2)
q.put(3)
q.put(4)
q.put(5)
print(q.full()) #
檢測佇列是否滿了~
print(q.get()) #
取出佇列中的值
(q.get())
(q.get())
(q.get())
(q.get())
print(q.empty()) #
檢測隊列為空
q.get_nowait() #
返回q中的乙個項,如果q為空此方法則阻塞,知道佇列中有專案可以用為止。
#用於控制阻塞行為,預設為true,如果設定為false,將引發queue.empty異常。
用while迴圈和異常處理實現即使佇列中沒有元素,也不阻塞,而是等待佇列中有了元素之後,再獲取元素。
from multiprocessing import結果:queue
import
time
q = queue(5) #
建立佇列物件,佇列大小為5,佇列中只能存放5個元素
q.put(1) #
往佇列中新增元素
q.put(2)
q.put(3)
q.put(4)
q.put(5)
print(q.full()) #
檢測佇列是否滿了~
print(q.get()) #
取出佇列中的值
(q.get())
(q.get())
(q.get())
(q.get())
print(q.empty()) #
檢測隊列為空
while
true:
try:
q.get_nowait()
#返回q中的乙個項,如果q為空此方法則阻塞,知道佇列中有專案可以用為止。
#用於控制阻塞行為,預設為true,如果設定為false,將引發queue.empty異常。
except
:
print('
佇列已空!
') #
用異常處理解決異常
time.sleep(1) #
等1秒之後,再獲取佇列中的元素
通過佇列在兩個子程序之間通訊。
from multiprocessing import結果:queue,process
class
myclass(process):
def__init__
(self,q):
super().
__init__
() self.q =q
defrun(self):
self.q.put(
'hello
') #
將資料新增到佇列中
class
consume(process):
def__init__
(self,q):
super().
__init__
() self.q =q
defrun(self):
print(self.q.get()) #
將資料從佇列中取出
if__name__ == '
__main__':
q =queue()
p = myclass(q) #
生產資料子程序
p.start()
c = consume(q) #
消耗資料子程序
c.start()
併發程式設計之併發佇列
jdk 中提供了一系列場景的併發安全佇列。總的來說,按照實現方式的不同可分為阻塞佇列和非阻塞佇列,前者使用鎖實現,而後者則使用cas 非阻塞演算法實現。1 非阻塞佇列 concurrentlinkedqueue concurrentlinkedqueue是無界非阻塞佇列,內部使用單項鍊表實現 其中有...
python併發程式設計 佇列MQ的學習
overview totals 所有佇列的阻塞情況 ready 待消費的訊息總數 unacked 待應答的訊息總數 total 總數 ready unacked publish producter pub訊息的速率。publisher confirm broker確認pub訊息的速率。deliver...
併發程式設計 阻塞佇列BlockingQueue
在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出 fifo first in first out 線性表。1 支援阻塞的插入方法 意思是當佇列滿時,佇列會阻塞插入元素的執行...