最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

利用python生成器實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型的方法介紹

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:25:07
文檔

利用python生成器實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型的方法介紹

利用python生成器實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型的方法介紹:假如說,沒有生成器這種對(duì)象,那么如何實(shí)現(xiàn)這種簡單的生產(chǎn)者消費(fèi)者模型呢?import timedef producer(): pro_list = [] for i in range(10000): print "包子%s制作ing" %(i) time.sleep(0.5) pro_list.
推薦度:
導(dǎo)讀利用python生成器實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型的方法介紹:假如說,沒有生成器這種對(duì)象,那么如何實(shí)現(xiàn)這種簡單的生產(chǎn)者消費(fèi)者模型呢?import timedef producer(): pro_list = [] for i in range(10000): print "包子%s制作ing" %(i) time.sleep(0.5) pro_list.

假如說,沒有生成器這種對(duì)象,那么如何實(shí)現(xiàn)這種簡單的“生產(chǎn)者消費(fèi)者”模型呢?

import time

def producer():

pro_list = []

for i in range(10000):

print "包子%s制作ing" %(i)

time.sleep(0.5)

pro_list.append("包子%s" %i)

return pro_list

def consumer(pro_list):

for index,stuffed_bun in enumerate(pro_list):

print "第%s個(gè)人,吃了第%s個(gè)包子" %(index,stuffed_bun)

pro_list = producer()

consumer(pro_list)

上面這種生產(chǎn)者與消費(fèi)者模型有一個(gè)嚴(yán)重的問題,就是效率極低,而且在“生產(chǎn)”的過程中,消費(fèi)者要等待,一直等待所有的包子都生產(chǎn)結(jié)束,消費(fèi)者才可以吃,這種模式效率低又不合理。

想要提高效率,就要對(duì)生產(chǎn)的過程,進(jìn)行修改,生產(chǎn)和消費(fèi)過程應(yīng)該是兩個(gè)獨(dú)立的個(gè)體,生產(chǎn)和消費(fèi)應(yīng)該做到“并發(fā)”(同時(shí))的操作。

import time

def consumer(name):

print '我是%s,準(zhǔn)備開始吃包子了'%(name)

while True:

stuffed_bun = yield

time.sleep(1)

print "%s很開心的把%s吃掉了" %(name,stuffed_bun)

def producer():

p1 = consumer("suhaozhi")

p2 = consumer("ayumi")

p1.next() #執(zhí)行next方法后,死循環(huán)開始

p2.next()

for i in range(10):

time.sleep(1)

p1.send("包子%s" %(i)) #通過send給yield賦值,yield在將值賦給stuffed_bun

p2.send("包子%s" %(i))

producer()

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

利用python生成器實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型的方法介紹

利用python生成器實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型的方法介紹:假如說,沒有生成器這種對(duì)象,那么如何實(shí)現(xiàn)這種簡單的生產(chǎn)者消費(fèi)者模型呢?import timedef producer(): pro_list = [] for i in range(10000): print "包子%s制作ing" %(i) time.sleep(0.5) pro_list.
推薦度:
標(biāo)簽: 生成器 模型 消費(fèi)者
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top