进程和线程的区别 | 学习笔记

简介: 快速学习进程和线程的区别,介绍了进程和线程的区别系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Python 入门 2020年版进程和线程的区别】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10471


进程和线程的区别

 

内容介绍:

一、线程和进程


一、线程和进程

1.功能

(1)进程,能够完成多任务,比如在一台电脑上能够同时运行多个 QQ。

(2)线程,能够完成多任务,比如一个 QQ 中的多个聊天窗口。

2.定义的不同

(1)进程是系统进行资源分配和调度的一个独立单位。

(2)线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

理解:在一个进程里可以有多个线程,线程在操作系统层面是看不到的,线程的分配资源更少,同一进程间的不同线程可以共享全局变量,就是多线程开发的卖票,申请的资源 ticket=20在进程里,线程不存储 ticket=20,当你有多个线程时,它们可以同时访问同一个全局变量。

多个进程能不能共享变量,全局变量是不是同一个呢?

如果再多一个进程2也是 ticket=20,进程1和进程2是两个不同的全局变量。不同的进程间不能共享全局变量。

一个程序里至少要有一个主进程,一个主进程里至少要有一个主线程。主进程里可以开子进程,在子进程里可以开子线程,这是多进程+多线程。

3.区别

(1)一个程序至少有一个进程,一个进程至少有一个线程。

(2)线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高。

(3)进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率

理解:线程的效率相对要比进程高,因为进程分享管理的资源多一些,cpu在切换时不止要切换做任务,还要切换上下文。携带的资源越少切换越快。同一个进程里线程共享全局变量,会有线程安全问题。

(4)线线程不能够独立执行,必须依存在进程中

(5)可以将进程理解为工厂中的一条流水线,而其中的线程就是这个流水线上的工人

理解:比如做锤子的流水线,假设最开始是一块铁和一根木头,这条流水线操作的都是同一个的资源,可以把这条线想成一个进程,流水线上有很多工人在操作,把一个人想象成一个线程,人多的时候效率就高了,进程就是一条流水线,再开一条,占用的资源就越多。

进程是越多越好吗?

不是,进程开多了忙不过来时,还是需要等待。就想有一个洗衣机只能洗一件衣服,洗得很快,但有500件衣服,是要同时有100个洗衣机还是少一点比如50个,应该50个比较好。进程的开销,占用的资源大一些。

4. 优缺点

线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。

进程可以在任务管理器详细信息中看到每一个进程的 pid 和运行情况。

相关文章
|
5天前
|
存储 消息中间件 资源调度
「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
该文章总结了操作系统基础知识中的十个关键知识点,涵盖了进程与线程的概念及区别、进程间通信方式、线程同步机制、死锁现象及其预防方法、进程状态等内容,并通过具体实例帮助理解这些概念。
「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
|
4天前
|
资源调度 算法 调度
深入浅出操作系统之进程与线程管理
【9月更文挑战第29天】在数字世界的庞大舞台上,操作系统扮演着不可或缺的角色,它如同一位精通多门艺术的导演,精心指挥着每一个进程和线程的演出。本文将通过浅显的语言,带你走进操作系统的内心世界,探索进程和线程的管理奥秘,让你对这位幕后英雄有更深的了解。
|
9天前
|
Java
直接拿来用:进程&进程池&线程&线程池
直接拿来用:进程&进程池&线程&线程池
|
9天前
|
负载均衡 Java 调度
探索Python的并发编程:线程与进程的比较与应用
本文旨在深入探讨Python中的并发编程,重点比较线程与进程的异同、适用场景及实现方法。通过分析GIL对线程并发的影响,以及进程间通信的成本,我们将揭示何时选择线程或进程更为合理。同时,文章将提供实用的代码示例,帮助读者更好地理解并运用这些概念,以提升多任务处理的效率和性能。
|
19天前
|
开发者 Python
深入浅出操作系统:进程与线程的奥秘
【8月更文挑战第46天】在数字世界的幕后,操作系统扮演着至关重要的角色。本文将揭开进程与线程这两个核心概念的神秘面纱,通过生动的比喻和实际代码示例,带领读者理解它们的定义、区别以及如何在编程中运用这些知识来优化软件的性能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技巧。
|
4天前
|
NoSQL 网络协议 Unix
1)Redis 属于单线程还是多线程?不同版本之间有什么区别?
1)Redis 属于单线程还是多线程?不同版本之间有什么区别?
11 0
|
4天前
|
数据采集 消息中间件 并行计算
进程、线程与协程:并发执行的三种重要概念与应用
进程、线程与协程:并发执行的三种重要概念与应用
15 0
|
4天前
|
数据采集 Linux 调度
Python之多线程与多进程
Python之多线程与多进程
11 0
|
9天前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
15 0
|
12天前
|
并行计算 API 调度
探索Python中的并发编程:线程与进程的对比分析
【9月更文挑战第21天】本文深入探讨了Python中并发编程的核心概念,通过直观的代码示例和清晰的逻辑推理,引导读者理解线程与进程在解决并发问题时的不同应用场景。我们将从基础理论出发,逐步过渡到实际案例分析,旨在揭示Python并发模型的内在机制,并比较它们在执行效率、资源占用和适用场景方面的差异。文章不仅适合初学者构建并发编程的基础认识,同时也为有经验的开发者提供深度思考的视角。