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

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

Python threading 線程跳不出來 后面代碼無法繼續執行 問題

Python threading 線程跳不出來 后面代碼無法繼續執行 問題

LEATH 2018-11-21 05:02:23
遇到同樣的問題,線程調用的方法里 while True 就跳不出這個線程 結束while循環 while 外面的def startsendfile(self,filelist,taskpath,filetypepath):    for k in range(2):        # new_thread = threading.Thread(target=self.booth(k,filelist,taskpath,filetypepath))         new_thread = threading.Thread(target=self.booth,args=(k,filelist,taskpath,filetypepath))        # new_thread.setDaemon(True)         self.thread_list.append(new_thread)    for t in self.thread_list:         t.start()    for t in self.thread_list:         t.join()     print("所有線程都結束了", time_now())線程調用方法def booth(self,tid, filelist,taskpath,filetypepath):    global thread_data_num    global lock    while True:        self.lock.acquire()        print(self.thread_data_num)        if self.thread_data_num != 0:            self.thread_data_num = self.thread_data_num - 1             item = filelist[self.thread_data_num]             time.sleep(10)        else:            break         self.lock.release()    print("出來了么")結果打印了===> 出來了么卻沒有執行打印 ===> 所有線程都結束了
查看完整描述

2 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

break前沒有釋放鎖,死鎖了

查看完整回答
反對 回復 2018-11-28
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

你給出的代碼中thread_data_num一直為0,所以booth里面的循環會立即break,才會打?。撼鰜砹嗣?,由于startsendfile中線程全部在t.join()位置阻塞,所以線程一直在等待中,不會打?。核芯€程都結束了

查看完整回答
反對 回復 2018-11-28
  • 2 回答
  • 0 關注
  • 2582 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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