執行緒 程序間通訊Queue合集

2022-06-19 11:45:11 字數 2563 閱讀 5566

#

queue的工作原理

from multiprocessing import

queue

q = queue(3)#

初始化乙個queue物件,最多可接收3條put訊息

q.put("

info1")

q.put(

"info2")

print("

q是否滿了

",q.full())#

檢視q是否滿了

q.put("

info3")

print("

q是否滿了

",q.full())

try:

q.put_nowait(

"info4")

except

:

print("

訊息列隊已經滿了,現有訊息數量為:%s

"%(q.qsize()))

#使用q.qsize()檢視數量

#先驗證是否滿了,再寫入

ifnot

q.full():

q.put_nowait(

"info4")

#讀取資訊時,先判斷訊息列隊是否為空,再讀取

ifnot

q.empty():

print("

開始讀取")

for i in

range(q.qsize()):

print(q.get_nowait())

from multiprocessing import

queue

from multiprocessing import

process

import

os,time,random

defwrite(q):

for value in ['

a','

b','c'

]:

print("

put %s to q ...

"%(value))

q.put(value)

time.sleep(random.random())

defread(q):

while

true:

ifnot

q.empty():

value =q.get(true)

print("

get %s from queue...

"%(value))

time.sleep(random.random())

else

:

break

if__name__ == '

__main__':

#父程序建立queue,傳給各個子程序

q =queue()

pw = process(target=write,args=(q,))

pr = process(target=read,args=(q,))

pw.start()

#等待pw結束

pw.join()

pr.start()

pr.join()

print("

資料寫入讀寫完成

")

from multiprocessing import

manager,pool

import

os,time,random

#名稱為reader 輸出子程序和父程序 os 輸出q的資訊

defreader(q):

print("

reader啟動,子程序:%s,父程序:%s

"%(os.getpid(),os.getppid()))

for i in range(q.qsize()):#

在0 ~ qsize範圍內

print("

獲取到queue的資訊:%s

"%(q.get(true)))

defwriter(q):

print("

writer啟動,子程序:%s,父程序:%s

"%(os.getpid(),os.getppid()))

for i in

"hanyang

":#需要寫入到 q 的資料

q.put(i)

if__name__ == '

__main__':

print("

%s 開始

"%(os.getpid()))

q = manager().queue()#

queue使用multiprocessing.manager()內部的

po = pool()#

建立乙個執行緒池

po.close()#關閉

po.join()#

等待結束

print("

(%s) 結束

"%(os.getpid()))

2020-05-07

程序間通訊 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物件...

程序間通訊 Queue

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