LeetCode之羅馬數字轉整數
阿新 • • 發佈:2020-09-10
''' 1. 什麼是生產者消費者模型 生產者:代指生產資料的任務 消費者:代指處理資料的任務 該模型的工作方式: 生產生產資料傳遞消費者處理 實現方式: 生產者---->佇列<------消費者 2. 為何要用 當程式中出現明細的兩類任務,一類負責生產資料,一類負責處理資料 就可以引入生產者消費者模型來實現生產者與消費者的解耦合,平衡生產能力與消費能力,從提升效率 3. 如何用 ''' ''' import time,random from multiprocessing import Process,Queue def producer(name,food,q): for i in range(3): res='%s%s' %(food,i) time.sleep(random.randint(1,3)) #模擬生產資料的時間 q.put(res) print('廚師[%s]生產了<%s>' %(name,res)) def consumer(name,q): while True: res=q.get() if res is None:break time.sleep(random.randint(1,3)) #模擬處理資料的時間 print('吃貨[%s]吃了<%s>' %(name,res)) if __name__ == '__main__': q=Queue() # 生產者們 p1=Process(target=producer,args=('小Egon','煎餅',q)) p2=Process(target=producer,args=('中Egon','肉夾饃',q)) p3=Process(target=producer,args=('大Egon','腰子湯',q)) # 消費者們 c1=Process(target=consumer,args=('alex',q)) c2=Process(target=consumer,args=('java',q)) p1.start() p2.start() p3.start() c1.start() c2.start() p1.join() p2.join() p3.join() q.put(None) q.put(None) print('主')''' import time,random from multiprocessing import Process,JoinableQueue def producer(name,food,q): for i in range(3): res='%s%s' %(food,i) time.sleep(random.randint(1,3)) #模擬生產資料的時間 q.put(res) print('廚師[%s]生產了<%s>' %(name,res)) def consumer(name,q):while True: res=q.get() time.sleep(random.randint(1,3)) #模擬處理資料的時間 print('吃貨[%s]吃了<%s>' %(name,res)) q.task_done() if __name__ == '__main__': q=JoinableQueue() # 生產者們 p1=Process(target=producer,args=('小Egon','涼皮',q)) p2=Process(target=producer,args=('中Egon','生煎',q)) p3=Process(target=producer,args=('大Egon','胡辣湯',q)) # 消費者們 c1=Process(target=consumer,args=('tom',q)) c2=Process(target=consumer,args=('python',q)) c1.daemon=True c2.daemon=True p1.start() p2.start() p3.start() c1.start() c2.start() p1.join() p2.join() p3.join() q.join() # 主程序等q結束,即q內資料被取乾淨了 print('主')