Python threading 线程跳不出来 后面代码无法继续执行 问题

遇到同样的问题,
线程调用的方法里 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("出来了么")

结果打印了===> 出来了么

却没有执行打印 ===> 所有线程都结束了


LEATH
浏览 2545回答 2
2回答

收到一只叮咚

break前没有释放锁,死锁了

慕容3067478

你给出的代码中thread_data_num一直为0,所以booth里面的循环会立即break,才会打印:出来了么,由于startsendfile中线程全部在t.join()位置阻塞,所以线程一直在等待中,不会打印:所有线程都结束了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python