亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么生產者消費者不停止?

為什么生產者消費者不停止?

繁星coding 2021-06-09 16:19:16
我找到了一個用兩個線程表示生產者-消費者的例子。但是,當我向進程發送停止信號時,它沒有。它期待第二個信號,例如SIGKILL完全停止。我以為問題出在,task_done()但似乎不是。import timeimport queueimport threadingimport randomclass Producer(threading.Thread):    """    Produces random integers to a list    """    def __init__(self, queue):        """        Constructor.        @param queue queue synchronization object        """        threading.Thread.__init__(self)        self.queue = queue    def run(self):        """        Thread run method. Append random integers to the integers        list at random time.        """        while True:            integer = random.randint(0, 256)            self.queue.put(integer)            print('%d put to queue by %s' % (integer, self.name))            time.sleep(1)class Consumer(threading.Thread):    """    Consumes random integers from a list    """    def __init__(self, queue):        """        Constructor.        @param integers list of integers        @param queue queue synchronization object        """        threading.Thread.__init__(self)        self.queue = queue    def run(self):        """        Thread run method. Consumes integers from list        """        while True:            integer = self.queue.get()            print('%d popped from list by %s' % (integer, self.name))            self.queue.task_done()def main():    q = queue.Queue()    t1 = Producer(q)    t2 = Consumer(q)    t1.start()    t2.start()    t1.join()    t2.join()if __name__ == '__main__':    main()輸出:210 put to queue by Thread-1210 popped from list by Thread-2Traceback (most recent call last):  File "/Users/abc/PycharmProjects/untitled1/ssid.py", line 74, in <module>    main()  File "/Users/abc/PycharmProjects/untitled1/ssid.py", line 69, in main    t1.join()
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號