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("出来了么")
结果打印了===> 出来了么
却没有执行打印 ===> 所有线程都结束了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
break
前没有释放锁,死锁了你给出的代码中thread_data_num一直为0,所以booth里面的循环会立即break,才会打印:出来了么,由于startsendfile中线程全部在t.join()位置阻塞,所以线程一直在等待中,不会打印:所有线程都结束了