ipc機制:程序通訊
管道:pipe,基於共享的記憶體空間
佇列:pipe+鎖
from multiprocessing import queue
q = queue()
q.put(3) # 放值
q.get() # 拿值
佇列不適合傳大檔案,通常傳一些訊息
生產者:生產資料的任務
消費者:處理資料的任務
生產者--->佇列--->消費者
生產者可以不停的生產,達到了自己最大的生產效率;消費者可以不停的消費,達到了自己最大的消費效率。
生產者消費者模型大大提高了生產者生產的效率和消費者消費的效率。
from multiprocessing import process,joinablequeue
import time
import random
def producer(q, name, food):
for i in range(3):
print(f'生產了')
time.sleep(random.randint(1, 3))
res = f''
q.put(res)
def consumer(q, name):
while true:
res = q.get()
time.sleep(random.randint(1, 3))
print(f'吃了')
q.task_done()
if __name__ == '__main__':
q = joinablequeue()
p1 = process(target=producer, args=(q, 'xiaowu', '肉包'))
p2 = process(target=producer, args=(q, 'liyi', '豆沙包'))
p3 = process(target=producer, args=(q, 'guapi', '菜包'))
c1 = process(target=consumer, args=(q, '張三'))
c2 = process(target=consumer, args=(q, '李四'))
p1.start()
p2.start()
p3.start()
c1.daemon = true
c2.daemon = true
c1.start()
c2.start()
p1.join()
p2.join()
p3.join()
q.join()
佇列,生產者消費者模型
from multiprocessing import process,lock import os,time,json with open user w encoding utf 8 as f dic json.dump dic,f def search with open user r enco...
生產者和消費者模型
基本的思路 這個問題相當於是生產者和消費者模型的問題 訊號量的含義 核心程式 define buffer count 100 定義資料佇列中資料塊的數目。block g buffer buffer count 資料緩衝區佇列 thread g threadb procb 儲存執行緒 訊號量,表示現在...
生產者和消費者模型
條件變數 可以引起阻塞,並非鎖,要和互斥量組合使用 超時等待 int pthread cond timedwait pthread cond t restrict cond,pthread mutex t restrict mutex,const struct timespec restrict a...