ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2020-12-22 23:35:54  阅读:176  来源: 互联网

标签:协程 Python 服务员 一个 任务 线程 进程


以下为复制内容:

https://blog.csdn.net/mr__l1u/article/details/81772073

 

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

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

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

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

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

 

2> 区别

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

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

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

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

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

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

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

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

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

标签:协程,Python,服务员,一个,任务,线程,进程
来源: https://www.cnblogs.com/zxy01/p/14176156.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有