#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 importqueue
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 importmanager,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...