av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

python 繼承線程的類 不能通過標志位結束線程

瀏覽:112日期:2022-06-30 15:52:11

問題描述

在測試生產消費者模型的時候遇到這樣一個問題,在繼承線程后 加了個標志位 mark

class Consumer(threading.Thread): def __init__(self, queue):threading.Thread.__init__(self)self._queue = queueself.mark = True def run(self):while self.mark: msg = self._queue.get() if isinstance(msg, str) and msg == ’quit’:break print('I’m a thread, and I received %s!!' % msg)print(’Bye byes!’)

def producer(): q = queue.Queue() worker = Consumer(q) worker.start() # 開啟消費者線程 start_time = time.time() while time.time() - start_time < 5:q.put(’something at %s’ % time.time())time.sleep(1) worker.mark = Flese worker.join()

我原先指望 通過這個標志位來實現線程的結束控制,但實際效果是程序卡死在worker.join()完全沒有退出。

請教下,這是什么原因?

問題解答

回答1:

class Consumer(threading.Thread): def __init__(self, queue):threading.Thread.__init__(self)self._queue = queueself.mark = True def run(self):while self.mark: try:msg = self._queue.get(block=False) # 非阻塞print('I’m a thread, and I received %s!!' % msg) except:pass print(’self.mark’,self.mark)print(’Bye byes!’)def producer(): q = queue.Queue() worker = Consumer(q) worker.start() # 開啟消費者線程 start_time = time.time() while time.time() - start_time < 5:q.put(’something at %s’ % time.time())time.sleep(1) worker.mark = False worker.join()

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲日韩中文字幕一区 | 国产精品久久久久久久久久免费看 | 九九导航 | 亚洲精品视频免费观看 | 精品无码久久久久久久动漫 | 国产片一区二区三区 | 中文字幕99 | 国产精品福利久久久 | av先锋资源 | 亚洲国产欧美在线 | av天天干 | 日本免费一区二区三区 | 在线免费看黄 | 免费超碰 | 嫩草影院黄 | 国产91成人 | 日韩av最新网址 | 亚洲国产成人精品女人久久久 | 四虎伊人 | 国产福利91精品 | 在线观看午夜视频 | 久久狠狠| 啪一啪 | 一级美国黄色片 | 亚洲欧美综合精品久久成人 | 狠狠操狠狠干 | 蜜桃综合在线 | 蜜桃精品视频在线 | 免费一级欧美在线观看视频 | 日韩在线精品强乱中文字幕 | 中文天堂网 | 成人免费在线播放 | 日本一区二区高清视频 | 日韩无| 成人在线免费观看 | 在线久草 | 一区二区三区亚洲 | 九色综合网 | 香蕉视频黄色 | 黄色毛片网站在线观看 | 亚洲精品视频一区 |