news 2026/5/9 21:49:33

python 多线程join如何让他不要卡住控制台

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python 多线程join如何让他不要卡住控制台

python 多线程join如何让他不要卡住控制台?像.NET一样等多线程运行完,有没有不卡的模式?

Python 多线程join()卡住控制台,核心原因是join()是阻塞式调用(会让主线程暂停,等待子线程全部执行完再继续),和 .NET 中默认阻塞模式一致;想要不卡控制台,本质是让主线程不被join()阻塞,实现 “后台等待子线程完成,同时主线程可正常响应”,推荐 3 种简单易实现、贴合 .NET 类似体验的方式,全程无卡顿:

1. 最简洁:用daemon=True+ 主线程非阻塞等待(推荐,类似 .NET 后台线程)

核心逻辑:给子线程设置daemon=True后台线程,主线程结束时自动终止未完成的子线程,主线程不调用join(),而是用time.sleep()或循环做非阻塞等待,既等子线程完成,又不卡控制台

import threading import time # 定义子线程任务 def task(name): for i in range(5): print(f"子线程{name}运行中...") time.sleep(1) # 创建子线程,设置为后台线程 t1 = threading.Thread(target=task, args=("A",), daemon=True) t2 = threading.Thread(target=task, args=("B",), daemon=True) # 启动线程 t1.start() t2.start() # 主线程非阻塞等待(不卡控制台,可做其他操作) while t1.is_alive() or t2.is_alive(): time.sleep(0.5) # 每隔0.5秒检查一次,不阻塞主线程 print("主线程正常运行,不卡顿...") # 可替换成控制台响应逻辑 print("所有子线程运行完毕,主线程结束")

2. 最贴合 .NET 体验:用concurrent.futures.ThreadPoolExecutor(无手动join()

ThreadPoolExecutor自带线程管理,shutdown(wait=True)类似 .NET 中 “等待所有线程完成”,但可通过主线程并行执行其他操作,避免卡顿,无需手动管理join()

from concurrent.futures import ThreadPoolExecutor import time def task(name): for i in range(5): print(f"子线程{name}运行中...") time.sleep(1) # 创建线程池(类似 .NET 线程池) with ThreadPoolExecutor(max_workers=2) as executor: # 提交任务 future1 = executor.submit(task, "A") future2 = executor.submit(task, "B") # 主线程可并行做其他操作(不卡顿) while not (future1.done() and future2.done()): print("主线程可正常响应,不卡住...") time.sleep(0.5) print("所有子线程执行完毕,主线程继续")

3. 进阶:用threading.Event实现非阻塞等待(灵活控制)

类似 .NET 中的信号量,通过事件标记子线程完成状态,主线程循环检查事件,不被join()阻塞,可灵活控制等待逻辑。

import threading import time # 创建事件(标记所有子线程完成) all_done = threading.Event() thread_count = 2 # 子线程数量 def task(name): global thread_count for i in range(5): print(f"子线程{name}运行中...") time.sleep(1) # 子线程完成,计数减1 thread_count -= 1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 21:41:33

地理空间AI基础模型:从掩码自编码器到多任务微调的实践指南

1. 项目概述:从“一事一议”到“一通百通”的地理空间AI新范式如果你在地球科学、遥感或者农业、灾害监测领域工作过,大概率对这样的场景不陌生:为了监测洪水,你需要收集特定区域、特定时间的卫星影像,然后费尽心思标注…

作者头像 李华
网站建设 2026/5/9 21:41:32

Q-learning算法在多市场寡头竞争中的动态演化与合谋抑制研究

1. 项目概述:当AI学会“内卷”,市场会发生什么?在经济学和计算机科学的交叉领域,有一个问题一直吸引着研究者和实践者:如果市场上的竞争者不是人类,而是不断自我学习、自我优化的智能算法,它们会…

作者头像 李华
网站建设 2026/5/9 21:40:56

CANN/hccl HCCL确定性计算配置

HCCL_DETERMINISTIC 【免费下载链接】hccl 集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann…

作者头像 李华