Python 生產消費者模型

2021-10-11 08:50:28 字數 1291 閱讀 6008

import time,random

import queue,threading

q = queue.queue()

# q.put(2)

# q.join()

# q.put(3)

def producer(name):

count = 0

while count <10:

print("******........")

time.sleep(5)

q.put(count)

print('producer %s has produced %s baozi..' %(name, count))

count +=1

q.task_done()#在佇列裡放資料之後,告訴一下佇列,我往裡面放了乙個資料

#q.join()

print("ok......")

def consumer(name):

count = 0

while count <10:

time.sleep(random.randrange(4))

# if not q.empty():

# print("waiting.....")

#q.join()#我在這邊收到你放了一條資料之後的訊息後 q.task_done(),我這邊才會往下執行,否則阻塞

data = q.get()

print("eating....")

time.sleep(4)

#q.task_done()

#print(data)

print('\033[32;1mconsumer %s has eat %s baozi...\033[0m' %(name, data))

# else:

# print("-----no baozi anymore----")

count +=1

p1 = threading.thread(target=producer, args=('a君',))

c1 = threading.thread(target=consumer, args=('b君',))

c2 = threading.thread(target=consumer, args=('c君',))

c3 = threading.thread(target=consumer, args=('d君',))

p1.start()

c1.start()

c2.start()

c3.start()

Python 生產者消費者模型

生產者消費者模型 我們都知道實現生產者消費者模型的三要素 寫乙個簡單的生產者消費者模型的例子 coding utf 8 import time,threading,queue,random 佇列 先入先出 q queue.queue 生產者 def producer for i in range 1...

Python 生產者 消費者模型

生產者 消費者模型是多執行緒同步的經典案例 此模型中生產者向緩衝區push資料,消費者從緩衝區中pull資料 這個demo中緩衝區用python實現的queue來做,這個模組是執行緒安全的使我不用再為佇列增加額外的互斥鎖.此外這個demo中訊號處理的實現是這樣的 1 主線程接到乙個sigterm的訊...

生產者消費者模型

1.生產者消費者問題 producer consumer 有限緩衝,多執行緒同步。生產者執行緒和消費者執行緒共享固定大小緩衝區。2.關鍵是保證生產者不會再緩衝區滿時加入資料,消費者不會在緩衝區空時消耗資料。3.解決辦法 讓生產者在緩衝區滿時休眠,等下次消費者消耗緩衝區中的資料的時候,生產者才能被喚醒...