有关Python中进程、线程、协程及其区别

1> 进程、线程和协程的认识:

  进程是系统进行资源分配和调度的独立单位;

  线程是进程的实体,是CPU调度和分派的基本单位;

  协程也是线程,称微线程,自带CPU上下文,是比线程更小的执行单元;

下图可以很好的解释进程与线程的关系:

这里写图片描述

2> 区别

  一个程序至少有一个进程,一个进程至少有一个线程;

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

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

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

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

4> 协程:我们假设把一个进程比作我们实际生活中的一个兰州拉面馆,那么负责保持拉面馆运行的服务员就是线程了,每个餐桌代表要完成的任务。

  当我们用多线程完成任务时,模式是这样的==》每来一桌的客人,就在那张桌子上安排一个服务员,即有多少桌客人就得对应多少个服务员;

  而当我们用协程来完成任务时,模式却有所不同了==》 就安排一个服务员,来吃饭得有一个点餐和等菜的过程,当A在点菜,就去B服务,B叫了菜在等待,我就去C,当C也在等菜并且A点菜点完了,赶紧到A来服务… …依次类推。

  从上面的例子可以看出,想要使用协程,那么我们的任务必须有等待。当我们要完成的任务有耗时任务,属于IO密集型任务时,我们使用协程来执行任务会节省很多的资源(一个服务员和多个服务员的区别。##能一个人服务一个店铺,这样的超人给我来一打 (-..-)), 并且可以极大的利用到系统的资源。

猜你喜欢

转载自blog.csdn.net/MR__L1u/article/details/81772073