程序間的通訊 佇列Queue

2022-06-22 22:48:15 字數 2242 閱讀 6183

1.佇列1

#

程序間通訊(ipc(inter-process communication))

#程序之間通訊用的佇列(queue),不是之前說的普通佇列(import queue)

#概念介紹

#建立共享的程序佇列,queue是多程序安全的佇列,可以使用queue實現多程序之間的資料傳遞

#queue([maxsize])

#建立共享的程序佇列

#引數:maxsize是佇列中允許的最大項數

#底層佇列使用管道和鎖定實現

#q.get( [ block [, timeout]] )

#返回q佇列中的乙個專案,如果q為空,此方法將阻塞,直到佇列中有專案可用為止,block用於控制阻塞的行為

#預設為true,如果設定為false,將引發queue.empty異常(定義在queue模組中)。timeout是可選超時時間

#用在阻塞模式中,如果在制定的時間間隔內沒有專案變為可用,將引發queue.empty異常

#q.get_nowait()

#同q.get(false)方法

#q.put(item [, block[, timeout]])

#將item放入佇列,如果佇列已滿,此方法將阻塞至有空間可用為止,block用於控制阻塞的行為

#預設為true,如果設定為false,將引發queue.empty異常(定義在queue模組中)

#timeout指定在阻塞模式中等待可用空間的時間長短,超時後將引發queue.full異常

#q.qsize()

#返回佇列中目前專案的正確數量,次函式的結果並不可靠,因為在返回結果和在稍後程式中使用結果之間,佇列中

#可能新增或刪除了專案,在某些系統上,此方法可能引發notimplementederror異常

#from multiprocessing import queue##

q = queue(5) # 建立乙個程序間通訊用的佇列,佇列大小是5

#q.put(1) # 向佇列中放資料,當放入到佇列的資料超過上限個時,會阻塞在這裡,只有當佇列中的資料被取走才會接觸阻塞向佇列裡繼續放資料

#q.put(1) # 向佇列中放資料

#q.put(1) # 向佇列中放資料

#q.put(1) # 向佇列中放資料

#q.put(1) # 向佇列中放資料

#print(q.full()) # 檢視佇列是否滿了,true表示滿了,false表示沒有滿

##q.put(1) # 向佇列中放資料 當放入到佇列的資料超過上限個時,會阻塞在這裡,只有當佇列中的資料被取走才會接觸阻塞向佇列裡繼續放資料

#print(q.get()) # 從佇列中取資料,當佇列中的資料被取乾淨之後,在呼叫get則會阻塞在這裡,等待佇列中有資料

#print(q.empty()) # 查詢佇列是否為空, false表示佇列非空,true表示佇列已經空了

#print(q.get())

#print(q.get())

#print(q.get())

#print(q.get())

#try:

#print(q.get_nowait()) # 取值,沒有值則不阻塞在這裡,會丟擲異常報錯

#except:

#print('佇列已空')

from multiprocessing import

queue

from multiprocessing import

process

#如果向佇列中放資料,則處於的是生產佇列的一方

defproduce(q):

'''生產資料的函式,向佇列中存放資料

:return:

'''q.put(

'hello')

#消耗資料的一方

defconsume(q):

'''消耗資料的一方,讀取佇列中的資料

:param q:

:return:

'''print

(q.get())

if__name__ == '

__main__':

q = queue() #

建立佇列時,沒有引數,則表示佇列無上限

p = process(target=produce, args=(q, ))

p.start()

c = process(target=consume, args=(q, ))

c.start()

Python程序間通訊Queue訊息佇列用法分析

程序間通訊 queue process之間有時需要通訊,作業系統提供了很多機制來實現程序間的通訊。1.queue的使用 可以使用multiprocessing模組的queue實現多程序之間的資料傳遞,queue本身是乙個訊息列隊程式,首先用乙個小例項來演示下queue的工作原理 如下 coding ...

程序間通訊 Queue

process之間有時需要通訊,作業系統提供了很多機制來實現程序間的通訊。可以使用multiprocessing模組的queue實現多程序之間的資料傳遞,queue本身是乙個訊息列隊程式,首先用乙個小例項來演示一下queue的工作原理 coding utf 8 from multiprocessin...

程序間通訊 Queue

可以使用multiprocessing模組的queue實現多程序之間的資料傳遞,queue本身是乙個訊息列隊程式,首先用乙個小例項來演示一下queue的工作原理 coding utf 8 from multiprocessing import queue q queue 3 初始化乙個queue物件...