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

网站开发算是软件开发设计网站的流程

网站开发算是软件开发,设计网站的流程,免费搭建网站哪个好,电商应该怎么做如何从零做起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://www.dtcms.com/wzjs/558702.html

相关文章:

  • 网站国外建设小程序登录网址
  • ssh鲜花礼品网站建设珠海 电商 网站建设
  • 东莞市行业网站制作公司怎么做网络销售的网站
  • 泰州做房产的网站接入服务商网站备案管理系统技术规范要求
  • 网站 数据库 sql 导入数据库文件博客页面html模板
  • 厦门网站制作案例二级网站建设情况说明
  • 蔬菜类网站建设规划书做一个html页面多少钱
  • 汽配网站源码app公司网站建设
  • 广州化妆品网站设计企业展厅设计公司虎
  • 教师做课题可以参考什么网站简单网页制作html
  • 电子商务网站规划原则wordpress 中文包
  • 在线生成个人网站app酒店网站建设的需求分析报告
  • 海珠网站建设制作崇州网站建站
  • 邢台市桥西住房建设局网站域名ip地址在线查询
  • 专业的外贸网站建设公司网站开发一般用的什么架构
  • 网站备案时间有效期上海连锁设计公司
  • 网站建设报告内容wordpress调用文章代码
  • 以网站和什么为重点建设平台做微商如何引流推广怎么找客源
  • 盐城市城乡和住房建设厅网站文本分析网站
  • 第一页网站SEO建工在线
  • 济宁哪里做网站深圳住房和建设局网站 申请
  • 网站开发兴趣组沈阳seo关键字优化
  • 汉中免费做网站非商业组织的网站风格
  • 内容聚合网站开发教程html个人简历模板
  • 创意响应式网站建设乡镇做电器网站能不能营运
  • 企业建立一个网站如何租用域名莱州相亲网站
  • 重庆外贸网站建设公司怎么做好网站运营
  • wordpress 导航网站模板下载一个空间做两个网站
  • 营销网站建设与推广方案全自动网站制作源码
  • 专做洗衣柜的网站创建网址链接