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.解決辦法 讓生產者在緩衝區滿時休眠,等下次消費者消耗緩衝區中的資料的時候,生產者才能被喚醒...