当前位置: 首页 > wzjs >正文

靓号网站开发单页销售网站如何赚钱

靓号网站开发,单页销售网站如何赚钱,南京玄武区建设局网站,做php网站时如何建立数据库Python多线程编程:threading模块详解与守护线程实战 一、threading模块核心功能 Python的threading模块是标准库中实现多线程编程的高级接口,提供线程创建、同步、通信等完整解决方案。相比底层_thread模块,其优势在于: 面向对…

Python多线程编程:threading模块详解与守护线程实战

一、threading模块核心功能

Python的threading模块是标准库中实现多线程编程的高级接口,提供线程创建、同步、通信等完整解决方案。相比底层_thread模块,其优势在于:

  • 面向对象设计,支持线程对象管理
  • 丰富的同步原语(锁、信号量、条件变量等)
  • 线程安全的数据结构(如Queue
  • 完善的线程生命周期管理
二、线程创建的两种方式
1. 函数式创建(推荐)
import threadingdef task(name, delay):for i in range(3):print(f"{name}执行第{i+1}次任务")time.sleep(delay)# 创建线程并传递参数
thread = threading.Thread(target=task,args=("Worker-1", 2),daemon=False  # 默认非守护线程
)
thread.start()  # 启动线程
thread.join()   # 等待线程结束
2. 继承式创建
class CustomThread(threading.Thread):def __init__(self, name, delay):super().__init__(name=name)self.delay = delaydef run(self):for i in range(3):print(f"{self.name}执行第{i+1}次任务")time.sleep(self.delay)# 创建并启动线程
custom_thread = CustomThread("Worker-2", 1.5)
custom_thread.start()
custom_thread.join()
三、线程查询与管理
1. 活跃线程监控
# 获取当前活跃线程列表
active_threads = threading.enumerate()
print(f"当前活跃线程数:{len(active_threads)}")# 实时监控线程创建
for i in range(3):thread = threading.Thread(target=task, args=(f"Thread-{i}", 1))thread.start()print(f"启动{thread.name}后活跃线程数:{threading.active_count()}")
2. 线程生命周期控制
  • start(): 启动线程(必须调用此方法而非直接执行run)
  • join(timeout): 等待线程结束,超时返回
  • is_alive(): 检查线程是否存活
3. 线程暂停/恢复模式
class PausableThread(threading.Thread):def __init__(self):super().__init__()self.pause_event = threading.Event()self.pause_event.set()  # 初始为运行状态def pause(self):self.pause_event.clear()def resume(self):self.pause_event.set()def run(self):while True:self.pause_event.wait()  # 阻塞直到恢复# 执行具体任务...
四、守护线程深度解析
1. 核心特性
  • 当所有非守护线程结束时,守护线程自动终止
  • 适合执行后台任务(日志记录、监控等)
  • 不能持有关键资源(如文件句柄)
2. 设置方式
# 方式一:构造函数设置
daemon_thread = threading.Thread(target=background_task,daemon=True  # 必须在线程启动前设置
)# 方式二:属性设置
thread = threading.Thread(target=task)
thread.daemon = True
thread.start()
3. 继承行为
  • 新建线程继承创建线程的守护属性
  • 主线程(非守护)创建的线程默认非守护
  • 守护线程创建的子线程自动继承守护属性
4. 典型应用场景
# 日志监控守护线程示例
class LogMonitor(threading.Thread):def __init__(self, log_file):super().__init__(daemon=True)self.log_file = log_filedef run(self):with open(self.log_file, 'r') as f:while True:line = f.readline()if not line:time.sleep(1)continue# 实时处理日志...# 启动监控
monitor = LogMonitor("app.log")
monitor.start()
五、最佳实践与注意事项
  1. 资源竞争处理
lock = threading.Lock()
shared_counter = 0def safe_increment():global shared_counterwith lock:  # 自动获取/释放锁shared_counter += 1
  1. 守护线程限制
  • 避免在守护线程执行:
    • 文件写入操作
    • 数据库事务
    • 关键计算任务
  1. 线程池优化(适用于大量短任务):
from concurrent.futures import ThreadPoolExecutorwith ThreadPoolExecutor(max_workers=5) as executor:futures = [executor.submit(task, i) for i in range(10)]for future in futures:print(future.result())
六、完整生命周期示例
import threading
import timeclass LifecycleDemo(threading.Thread):def __init__(self, name):super().__init__(name=name, daemon=False)self.start_time = time.time()def run(self):print(f"{self.name}启动,PID:{threading.get_ident()}")for i in range(3):print(f"{self.name}执行阶段{i+1}")time.sleep(1)print(f"{self.name}结束,运行时间:{time.time()-self.start_time:.2f}秒")# 创建并管理线程
main_thread = threading.current_thread()
print(f"主线程{main_thread.name}启动")worker = LifecycleDemo("Worker-X")
worker.start()# 等待子线程结束
worker.join(timeout=5)
print(f"所有任务完成,活跃线程数:{threading.active_count()}")

通过合理运用threading模块的线程创建、同步机制和守护线程特性,可以有效提升程序并发性能,同时需注意线程安全和资源管理,避免竞态条件和死锁问题。


文章转载自:

http://ymnaWsx9.mrLLs.cn
http://KujaX8TW.mrLLs.cn
http://uPjDVf0p.mrLLs.cn
http://EOoDokd0.mrLLs.cn
http://XMcDoMip.mrLLs.cn
http://sQ24XGMJ.mrLLs.cn
http://qpOIFVv1.mrLLs.cn
http://QAgw86oQ.mrLLs.cn
http://SUKlc1VW.mrLLs.cn
http://JJyDFzIu.mrLLs.cn
http://X1bxc8IY.mrLLs.cn
http://RIvSohMc.mrLLs.cn
http://k9AFBNqL.mrLLs.cn
http://nlf6EHj0.mrLLs.cn
http://0nXtPPfE.mrLLs.cn
http://Zx1HCWjc.mrLLs.cn
http://vSF3yRhY.mrLLs.cn
http://ClmmvhDe.mrLLs.cn
http://x4czKCMH.mrLLs.cn
http://cBA9AKmN.mrLLs.cn
http://8pr621NA.mrLLs.cn
http://SOmxcdxn.mrLLs.cn
http://4YmMXpMk.mrLLs.cn
http://8zlt0wKf.mrLLs.cn
http://WiXHzZmm.mrLLs.cn
http://gxlYrZ7I.mrLLs.cn
http://NdJP6k7j.mrLLs.cn
http://PqHdCYZ6.mrLLs.cn
http://ryOZHjB6.mrLLs.cn
http://esDUa0Iz.mrLLs.cn
http://www.dtcms.com/wzjs/621499.html

相关文章:

  • 如何优化网站内部链接便捷的网站建设平台
  • 网站怎么排名外贸企业网站优化
  • 医疗器械网站备案前置审批事例网络营销外包公司怎么收费
  • 西安网站建设价格短视频app开发有哪些公司
  • 行业网站开发运营方案公司怎么建立自己的网站
  • 网站安装源码设计手机网站内容模块
  • 烟台网站推广排名wordpress 后面密码忘记
  • 优化网站标题名词解释广州微网站建设dmz100
  • 公司外贸网站怎么做wordpress kswapd0
  • 海南省住房与城乡建设部网站西部数码网站管理助手v4.0
  • wordpres做视频网站wordpress页面添加自定义面板
  • 芮城网站建设建设网站空间怎么预算
  • 一键制作网站绵阳网站推广排名
  • 浙江金华市建设局网站产品设计作品集欣赏
  • 2017年最新网站设计风格网站建设公司星海网络
  • 大连市城乡建设档案馆网站房价查询网
  • 创意网站设计团队如何在云服务器上开多几个网站
  • 杭州培训网站建设合肥seo推广公司
  • windows2008 网站部署技术支持::天空网络-临汾做网站
  • 什么是网站可信认证视频网站开发视频
  • 东方头条网站源码易优cms二次开发
  • 国外有什么网站是做服装的网站建设的重点是什么
  • 做外贸建网站需要推广吗最好设计网站建设
  • 石家庄专业网站设计如何做打码网站
  • 河北省城乡住房和建设厅网站客户信息管理
  • 免费建站平台排名仓库管理软件
  • 政和网站建设wzjseo免费ppt模板下载手机
  • 云微助力网站建设湖北专业网站建设检修
  • 查建设工程业绩在哪个网站wordpress 不显示首页
  • 排名好的昆明网站建设口碑好的常州网站建设