Python--多线程

news/2025/2/15 6:58:46/

一、多线程与多进程

1.1 基本概念

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

1.2 进程与线程对比

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

1.3 线程库使用示例

  • import threadingclass CounterThread(threading.Thread):def __init__(self, name):super().__init__()self.name = nameself.count = 0def run(self):  # 必须重写run方法for _ in range(100):self.count += 1print(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 countercounter += 1
    

http://www.ppmy.cn/news/1572168.html

相关文章

DeepSeek R1打造本地化RAG知识库

本文将详细介绍如何使用Ollama、Deepseek R1大语音模型、Nomic-Embed-Text向量模型和AnythingLLM共同搭建一个本地的私有RAG知识库。 一. 准备工作 什么是RAG? RAG是一种结合了信息检索和大模型(LLM)的技术,在对抗大模型幻觉、…

A4988一款带转换器和过流保护的 DMOS 微步驱动器的使用方式

A4988是一款带转换器和过流保护的 DMOS 微步驱动器,用于驱动双极步进电动机。它支持全、半、1/4、1/8 及 1/16 步进模式,输出驱动性能可达 35 V 及 2 A。其特点包括简单的步进和方向控制接口、可调电位器调节最大电流输出、自动电流衰减模式检测/选择以及…

算法-哈希表03-快乐数

快乐数 力扣题目链接 题目描述 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。…

【前端框架】Vue3 面试题深度解析

本文详细讲解了VUE3相关的面试题,从基础到进阶到高级,分别都有涉及,希望对你有所帮助! 基础题目 1. 简述 Vue3 与 Vue2 相比有哪些主要变化? 答案: 响应式系统:Vue2 使用 Object.definePrope…

C# 变量,字段和属性的区别

总目录 前言 在C#中,变量(Variables)、字段(Fields) 和 属性(Properties) 是三个容易混淆但作用截然不同的概念。以下是它们的核心区别与使用场景: 一、变量(Variables&…

物联网智能语音控制灯光系统设计与实现

背景 随着物联网技术的蓬勃发展,智能家居逐渐成为现代生活的一部分。在众多智能家居应用中,智能灯光控制系统尤为重要。通过语音控制和自动调节灯光,用户可以更便捷地操作家中的照明设备,提高生活的舒适度与便利性。本文将介绍一…

mysql用户名怎么看

要查看 mysql 中的用户名,可以使用以下方法:使用 show databases 命令查看数据库拥有者信息;使用 ps 命令查看正在运行的 mysql 进程;使用 whoami 命令查看当前操作系统用户名;查看 /etc/mysql/my.cnf 或 /etc/my.cnf …

DeepSeek本地部署及接口调用

最近国产大模型 DeepSeek 非常火,DeepSeek 是一个开源模型,我们可以通过本地部署在自己的终端上随时使用,而且部署到本地后无需联网即可直接使用,以windows为例。 一、安装Ollama 如果想要在本地运行 DeepSeek 需要用到 Ollama …