1. 程式人生 > >7.2.6 - 並發多線程 隊列

7.2.6 - 並發多線程 隊列

lan maxsize 沒有 限制 code ces 共享 受限 長度

隊列介紹

進程彼此之間互相隔離,要實現進程間通信(IPC),multiprocessing模塊支持兩種形式:隊列和管道,這兩種方式都是使用消息傳遞的

創建隊列的類(底層就是以管道和鎖定的方式實現):

Queue([maxsize]):創建共享的進程隊列,Queue是多進程安全的隊列,可以使用Queue實現多進程之間的數據傳遞。

參數介紹:

maxsize是隊列中允許最大項數,省略則無大小限制。
但需要明確:
    1、隊列內存放的是消息而非大數據
    2、隊列占用的是內存空間,因而maxsize即便是無大小限制也受限於內存大小

主要方法介紹:

q.put方法用以插入數據到隊列中。
q.get方法可以從隊列讀取並且刪除一個元素。

from multiprocessing import Queue
q = Queue(3)      # 隊列最大長度為3
q.put("hello")
q.put({a:1})
q.put([1,2,3])
# q.put(1)        #  在放就阻塞了,因為隊列已經滿了
print(q.full())   # 查看隊列是否滿了(滿了就True)
for i in range(3):
    print(q.get())
print(q.empty())  # 查看隊列是否空了(空了就True)
print(q.empty())  # 在取就阻塞了因為,隊列沒有數據,所以就阻塞
 

7.2.6 - 並發多線程 隊列