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

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

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

瀏覽:118日期: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 編程
相關文章:
主站蜘蛛池模板: 国模精品视频一区二区 | 欧美性久久 | 午夜精品999 | 免费成人小视频 | 伊人中文 | 日韩一级在线观看 | 久久亚洲天堂 | 精品一区二区三区在线观看 | 欧美视频免费看 | 久久视频这里只有精品 | 日本在线视频一区 | 美女视频福利 | 黄色精品网站 | 久久天堂网 | 亚洲精选一区 | 日本午夜影院 | 国产精品免费在线播放 | 国产成人三级一区二区在线观看一 | 亚洲色综合 | 日韩精品一二区 | 中文字幕精品三区 | 亚洲精品色图 | 黄色天堂 | 91日韩欧美 | 簧片在线免费观看 | 亚洲国产91 | 国产黄色三级 | 视频爱爱免费视频爱爱太爽 | 久久久免费观看 | 九九九精品视频 | 911亚洲精品 | 国产午夜精品视频 | 依人久久 | 欧美三根一起进三p | 日韩一区二区三区四区 | 成人黄性视频 | 天堂中文av | 欧美黄色一级 | 精品少妇v888av| 四虎成人影视 | 欧美日韩综合在线 |