开发者学堂课程【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 和运行情况。