python编程系列---最详细的讲解进程与线程的关系

进程与线程

先引入三个比如: cpu---公司   

                          进程---办公室

         线程---程序员(我们) 

         全局变量,内存等资源---公司提供的电脑,桌子等  

进程:  操作系统分配程序执行资源的单位

线程:进程的一个实体,是CPU调度分配的单位。

  理解: 进程一旦建立,便有了一个主线程与主进程,还包括线程可能用到的内存,硬盘等资源,也就是是说,进程=线程+资源,就好比一个办公室=程序员+电脑 , 电脑这些资源由公司负责分配,而真正使用这些资源的是我们程序员.

多进程与多线程

  为了更大的提高公司的业绩,自然会想到扩大公司规模,再开办公室(相当于开多个进程),或者只有一个办公室的情况下,再招更多人的程序员(相当于开更多的线程)

  这两种都可以,但是毫无疑问,再开一间办公室会消耗更多的财力,对操作系统来说,再开一个进程,相当于克隆一个原来的进程,开辟一条缓存区,保存主线程的信息,这都需要消耗时间,当需要的子进程更多,当然就不合适了;再就是多招一些员工,继续在这个办公室工作,相当于在原来的进程中再开一些子线程,这样也可以实现多任务,所以多线程比多进程有更高的并发性,但有问题是,这个办公室的电脑等资源有限,会出现资源的争夺,即在共享全局变量的时候会出现安全性问题,  在多进程中,各自用各自的资源,虽然资源一样,但是不共享

 

并行与并发

并行:当任务数小于或者等于cpu核数时,每一个任务都有对应的cpu来处理执行,即任务真的是一起执行

并发: 指的是任务数多于cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)

如果你和我有共同爱好,我们可以加个好友一起交流!

原文地址:https://www.cnblogs.com/ywk-1994/p/9439602.html