亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python中生產(chǎn)者消費(fèi)者線程問題

瀏覽:99日期:2022-08-25 14:16:33

問題描述

在使用python的多線程時(shí),使用了生產(chǎn)者消費(fèi)者模式,一般都是消費(fèi)者接受生產(chǎn)者的數(shù)據(jù)執(zhí)行某些操作,但是現(xiàn)在這個(gè)消費(fèi)者線程遇到了異常,需要終止執(zhí)行,但是生產(chǎn)者線程因?yàn)檫€在生產(chǎn)數(shù)據(jù),主線程在等待它執(zhí)行完。目前想當(dāng)消費(fèi)者線程遇到錯(cuò)誤時(shí)能夠通知生產(chǎn)者線程,我掛了,你也結(jié)束吧。請(qǐng)問大家有什么好的實(shí)現(xiàn)方法

import threadingclass Producer(threading.Thread): def __init__(self, queue):super(Producer, self).__init__()self.queue = queue def run(self):while True: for i in range(10):self.queue.put(i)class Consumer(threading.Thread): def __init__(self, queue):super(Consumer, self).__init__()self.queue = queue def run(self):while True: try:data = self.queue.get()print dataif data == 5: raise ValueError(’over’) except ValueError as e:#通知生產(chǎn)者結(jié)束#如何實(shí)現(xiàn)?

問題解答

回答1:

我的方法:添加一個(gè) flag 標(biāo)識(shí)。

先看結(jié)果吧:

python中生產(chǎn)者消費(fèi)者線程問題

更多廢話也不多說了,show u the code

#!/usr/bin/python# coding=utf-8import threadingimport timeclass Producer(threading.Thread): def __init__(self, queue, flag):super(Producer, self).__init__()self.queue = queueself.flag = flag def run(self):while True: length = max(self.queue) + 1 print '============================= producer queue', self.queue self.queue.append(length) print ’flag length=’, len(self.flag) if len(self.flag) == 0:print 'producer 我也結(jié)束了'break time.sleep(2)class Consumer(threading.Thread): def __init__(self, queue, flag):super(Consumer, self).__init__()self.queue = queueself.flag = flag def run(self):while True: try:length = len(self.queue)print 'consumer queue', self.queueif length > 5: self.flag.pop() # 注意我是flag raise ValueError(’over’)self.queue.pop(0) except ValueError as e:# 通知生產(chǎn)者結(jié)束# 如何實(shí)現(xiàn)?print 'consumer 我結(jié)束了', ebreak# raise(e) time.sleep(4)queue = [1, 2, 3]flag = [0] # 表示正常Consumer(queue, flag).start()time.sleep(1)Producer(queue, flag).start()

最后說說python的多線程,由于GIL的存在,其實(shí)多線程有的時(shí)候并不是最好的選擇,具體什么時(shí)候使用,網(wǎng)上也說的很多了,樓主也可以結(jié)合自己的業(yè)務(wù)情況舍取多線程模塊。

回答2:

簡(jiǎn)單的話,就直接把錯(cuò)誤raise出來,然后讓進(jìn)程自己崩潰掉就好了.或者,你也可以用異常處理把消費(fèi)者的run包裹起來,捕獲這個(gè)異常,然后再控制生產(chǎn)者的線程就好了.

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 男人天堂综合网 | 国产毛片在线视频 | 午夜久久久 | 黄色一级毛片免费看 | 亚洲性久久 | 欧美人牲 | 成年女人毛片免费视频 | 四虎hk网址| 亚洲国产精久久久久久久春色 | 国产乱淫视频 | 色综色 | 国产精品一在线观看 | 99热er | 国产3区| 国产婷婷综合在线视频 | 亚洲精品色图 | 9久9久女女免费精品视频在线观看 | 亚洲日本色图 | 国产在线观看91精品2021 | 伊人亚洲影院 | 亚洲免费黄色网 | 91精品手机国产在线观 | www.夜色| 免费高清精品国偷自产在线 | 在线观看精品国内福利视频 | 一级黄色网 | 久久精品国产精品青草图片 | 国产精品久久久久久搜索 | 美国特级成人毛片 | 色视频网站人成免费 | 欧美精品一区二区三区在线播放 | 自拍视频网址 | 精品夜夜春夜夜爽久久 | www.久久精品视频 | 精品欧美一区二区在线看片 | 91亚洲精品一区二区在线观看 | 国产精品外围在线观看 | 久久一精品 | 麻豆爱爱视频 | 毛片在线看免费 | 亚洲综合激情另类图片专区 |