进程,线程和协程的区别和使用

1.进程:程序的一次运行过程,例如正在运行的QQ,是系统资源调度和分配的基本单位

假设我们用的电脑是单核的,cpu同时只能执行一个进程。当程序处于I/O阻塞的时候,CPU如果和程序一起等待,那就太浪费了,cpu会去执行其他的程序,此时就涉及到切换,切换前要保存上一个程序运行的状态,才能恢复,所以就需要有个东西来记录这个东西,就可以引出进程的概念了。

进程就是一个程序在一个数据集上的一次动态执行过程。

进程由程序,数据集,进程控制块三部分组成。

程序用来描述进程哪些功能以及如何完成;

数据集是程序执行过程中所使用的资源;

进程控制块用来保存程序运行的状态

   优点:利用多核效率高,适用于CPU密集型运算。

   缺点:耗资源

2.线程:是进程的子任务, CPU调度和分配的基本单位,实现进程内并发

一个进程可以包含多个线程,线程依赖进程存在,并共享进程内存  一个进程中可以开多个线程,为什么要有进程,而不做成线程呢?

因为一个程序中,线程共享一套数据,如果都做成进程,每个进程独占一块内存,那这套数据就要复制好几份给每个程序,不合理,所以有了线程。

线程又叫轻量级进程,是一个基本的cpu执行单元,也是程序执行过程中的最小单元。

一个进程最少也会有一个主线程,在主线程中通过threading模块,在开子线程

  优点:耗资源低,适用于I/O密集型,例如访问数据库,文件读写,网络传输。

  缺点:无法利用多核

3.协程:在一个线程中规定某个代码块执行顺序,一个代码执行的时候的等待的时间,让另一个代码去执行。同一时刻只能有一个在运行 。

     

  优点:可以弥补多线程的无法利用多核,耗资源低,适用于I/O密集型,例如访问数据库,文件读写,网络传输。

  缺点:不适用于CPU密集型计算

4.进程,线程,协程的关系

(1)一个协程只能属于一个线程,一个线程至少有一个协程,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程

(2)资源分配给进程,进程是程序的主体,同一进程的所有线程共享该进程的所有资源

(3)cpu分配给线程,即真正在cpu上运行的是线程

(4)线程是最小的执行单元,进程是最小的资源管理单元

 

 

猜你喜欢

转载自blog.csdn.net/baidu_41796276/article/details/112426385