程序彼此之間互相隔離,要實現程序間通訊(ipc),multiprocessing模組支援兩種形式:佇列和管道,這兩種方式都是使用訊息傳遞的
建立佇列的類(底層就是以管道和鎖定的方式實現):
queue([maxsize]):建立共享的程序佇列,queue是多程序安全的佇列,可以使用queue實現多程序之間的資料傳遞。
引數介紹:
maxsize是佇列中允許最大項數,省略則無大小限制。
但需要明確:
1、佇列內存放的是訊息而非大資料
2、佇列占用的是記憶體空間,因而maxsize即便是無大小限制也受限於記憶體大小
主要方法介紹:
q.put方法用以插入資料到佇列中。
q.get方法可以從佇列讀取並且刪除乙個元素。
from multiprocessing importqueue
q = queue(3) # 佇列最大長度為3
q.put(
"hello")
q.put()
q.put([1,2,3])
#q.put(1) # 在放就阻塞了,因為佇列已經滿了
print(q.full()) #
檢視佇列是否滿了(滿了就true)
for i in range(3):
(q.get())
print(q.empty()) #
檢視佇列是否空了(空了就true)
print(q.empty()) #
在取就阻塞了因為,佇列沒有資料,所以就阻塞
多執行緒併發佇列實現
2.使用 wait notify 實現乙個佇列,佇列有2個方法,add 和 get add方法往佇列中新增元素,get方法往佇列中獲得元素。佇列必須是執行緒安全的。如果get執行時,隊列為空,執行緒必須阻塞等待,直到有佇列有資料。如果add時,佇列已經滿,則add執行緒要等待,直到佇列有空閒空間。1...
IOS 網路多執行緒 併發 序列佇列
dispatch queue t queue dispatch get global queue 0,0 全域性佇列 dispatch queue t queue3 dispatch queue create queu3 dispatch queue concurrent 併發佇列 dispatch...
多執行緒併發
多執行緒併發主要有3個方面 1 同步器 主要有synchronized,reentrantlock 訊號量,門栓 countdownlatch 障柵 cyclicbarrier 交換器。2 同步容器 主要包括 對映 集 佇列 對映 concurrenthashmap,concurrentskipli...