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

Python--多线程

一、多线程与多进程

1.1 基本概念

  • 进程:操作系统资源分配的基本单位,独立的内存空间,包含一个或多个线程。
  • 线程:CPU调度的最小单位,共享进程资源,轻量级执行流。
  • 多线程:同一进程内多个线程并发执行(如浏览器同时处理下载和渲染)。
  • 多进程:多个独立进程并行执行(如同时运行多个Python脚本)。

1.2 进程与线程对比

维度多进程多线程总结
数据共享数据隔离,需IPC(如管道、队列)共享进程内存,需同步机制(如锁)线程共享易,进程隔离强
资源开销内存占用高,创建/销毁慢内存占用低,创建/销毁快线程更轻量
容错性进程崩溃不影响其他进程线程崩溃可能导致整个进程终止进程更稳定
适用场景CPU密集型任务(如科学计算)I/O密集型任务(如网络请求、文件读写)根据任务类型选择

1.3 线程库使用示例

  • import threading
    
    class CounterThread(threading.Thread):
        def __init__(self, name):
            super().__init__()
            self.name = name
            self.count = 0
    
        def run(self):  # 必须重写run方法
            for _ in range(100):
                self.count += 1
                print(f"{self.name}: {self.count}")
    
    # 创建并启动线程
    t1 = CounterThread("Thread-1")
    t2 = CounterThread("Thread-2")
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    print("主线程结束")
    

1.4 线程同步(补充)

  • 锁机制:防止数据竞争。

    lock = threading.Lock()
    def safe_increment():
        with lock:
            global counter
            counter += 1
    
http://www.dtcms.com/a/16026.html

相关文章:

  • 探索ChatGPT背后的前端黑科技
  • 机器学习数学基础:26.随机变量分布详解
  • Python用PyMC3马尔可夫链蒙特卡罗MCMC对疾病症状数据贝叶斯推断
  • 一阶微分方程的解法与通解式全解析
  • gitlab无法登录问题
  • 周考考题(学习自用)
  • 【webview Android】视频获取首帧为封面
  • Niginx笔记
  • 本地部署DeepSeek(Mac版本,带图形化操作界面)
  • 广东茂名能源国际会议(IS-ESE 2025)
  • 备战蓝桥杯 Day1 回顾语言基础
  • 数字化转型的深度思考与最佳实践
  • Linux查找占用的端口,并杀死进程的简单方法
  • 智慧升级,赋能未来——开启安全高效与绿色低碳新篇章
  • 深入Flask:如何优雅地处理HTTP请求与响应
  • Spring IoC的实现机制是什么?
  • 数组_移除元素
  • MATLAB 生成脉冲序列 pulstran函数使用详解
  • 数据处理中多线程功能的设计逻辑,及python的多线程实现
  • C# 变量,字段和属性的区别
  • SQL-leetcode—1683. 无效的推文
  • Linux 安装 Ollama
  • 使用epoll与sqlite3进行注册登录
  • Spring Boot中使用Flyway进行数据库迁移
  • 云原生AI Agent应用安全防护方案最佳实践(下)
  • 安灯电子看板助力汽车零部件工厂实时监控与高效管理
  • 学习京东写测试用例
  • 上传解析 Excel 表(XLSX 文件)转为JSON数据
  • 【C/C++】位段
  • 【嵌入式】PCB电路板设计时,如何保证信号完整性?