进程,是执行中的计算机程序。也就是说,每个代码在执行的时候,首先本身即是一个进程。一个进程具有:就绪,运行,中断,僵死,结束等状态(不同操作系统不一样)。

运行中每个进程都拥有自己的地址空间、内存、数据栈及其它资源。

操作系统本身自动管理着所有的进程(不需要用户代码干涉),并为这些进程合理分配可以执行时间。

进程可以通过派生新的进程来执行其它任务,不过每个进程还是都拥有自己的内存和数据栈等。

进程间可以通讯(发消息和数据),采用 进程间通信(IPC) 方式。

线程,是在进程中执行的代码。

一个进程下可以运行多个线程,这些线程之间共享主进程内申请的操作系统资源。

线程,必须在一个存在的进程中启动运行

线程使用进程获得的系统资源,不会像进程那样需要申请CPU等资源

线程无法给予公平执行时间,它可以被其他线程抢占,而进程按照操作系统的设定分配执行时间

每个进程中,都可以启动很多个线程

协程: 协程,又称微线程,纤程,英文名Coroutine。协程的作用,是在执行函数A时,可以随时中断,去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过程并不是函数调用(没有调用语句),这一整个过程看似像多线程,然而协程只有一个线程执行.

协程的主要特色是:

协程间是协同调度的,这使得并发量数万以上的时候,协程的性能是远远高于线程。

进程和线程的区别

一个进程中的各个线程与主进程共享相同的资源,与进程间互相独立相比,线程之间信息共享和通信更加容易(都在进程中,并且共享内存等)。

线程一般以并发执行,正是由于这种并发和数据共享机制,使多任务间的协作成为可能。

进程一般以并行执行,这种并行能使得程序能同时在多个CPU上运行;

区别于多个线程只能在进程申请到的的“时间片”内运行(一个CPU内的进程,启动了多个线程,线程调度共享这个进程的可执行时间片),进程可以真正实现程序的“同时”运行(多个CPU同时运行)。

协程优点:

  1. 协程的切换开销更小,属于程序级别的切换,操作系统完全感知不到,因而更加轻量级

  2. 单线程内就可以实现并发的效果,最大限度地利用cpu

协程缺点:

  1.协程的本质是单线程下,无法利用多核,可以是一个程序开启多个进程,每个进程内开启多个线程,每个线程内开启协程

  2.协程指的是单个线程,因而一旦协程出现阻塞,将会阻塞整个线程

Python中的线程、进程、协程以及区别相关推荐

  1. Python中多线程多进程与协程的区别

    进程:一个运行的程序(代码)就是一个进程,没有运行的代码叫程序,进程是系统资源分配的最小单位,进程拥有自己独立的内存空间,所以进程间数据不共享,开销大. 线程: 调度执行的最小单位,也叫执行路径,不能 ...

  2. python协程和线程区别_python中的线程和协程之间有什么区别

    一.首先我们来了解一下线程和协程的概念1.线程线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源( ...

  3. 怎么更进一步学python_【百尺竿头,更进一步学Python】Python进阶课程——进程,线程和协程的区别...

    本文带来各类奇怪的IT百科知识. [百尺竿头,更进一步学Python]Python进阶课程--进程:线程和协程的区别 现在多进程多线程已经是老生常谈了:协程也在最近几年流行起来.今天我们本文主要介绍进 ...

  4. python中IO多路复用、协程

    一.IO多路复用 IO多路复用:检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写) import socket def get_data(key):client ...

  5. Go中线程和协程的区别

    1. 协程是什么 ? 在go语言中,协程被认为是轻量级的线程, 和线程不同的是,操作系统内核 感知不到协程的存在, 协程的管理依赖于Go语言运行时自身提供的调度器 同时Go语言中的协程是从属于某一个线 ...

  6. python协程和线程区别_Python中进程、线程、协程及其区别

    以下为复制内容: https://blog.csdn.net/mr__l1u/article/details/81772073 1> 进程.线程和协程的认识: 进程是系统进行资源分配和调度的独立 ...

  7. python线程进程协程面试_Python学习经验之谈:关于协程的理解和其相关面试问题...

    都知道Python非常适合初学者学习来入门编程,昨天有伙伴留言说面试了Python岗位,问及了一个关于协程的问题,想了想还是跟大家出一篇协程相关的文章和在Python面试中可能会问及的相关面试问题.都 ...

  8. python进程线程协程区别_进程和线程、协程的区别

    现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来.python中有协程库gevent,py web框架tornado中也用了gevent封装好的协程.本文主要介绍进程.线程和协程三者之间的区 ...

  9. python线程协程进程的区别_进程和线程、协程的区别

    现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来.python中有协程库gevent,py web框架tornado中也用了gevent封装好的协程.本文主要介绍进程.线程和协程三者之间的区 ...

  10. linux进程线程协程的区别,进程和线程、协程的区别

    现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来.python中也有协程库,tornado中也用了gevent封装好的协程.本文主要介绍进程.线程和协程三者之间的区别. 一.概念 1.进程 ...

最新文章

  1. apache 2.4.12 + tomcat 7.0.61 + jk connectors 1.2.40实现tomcat负载均衡集群
  2. Java数据类型与各数据库类型对应一览表
  3. cmd 调用webservice接口_c# 三种方法调用WebService接口
  4. 数据库IN查询参数化改造的方法
  5. anaconda对应python版本_Python基础——如何查看python版本、如何查看多个python版本
  6. ruby mysql 占位符_ruby操作常用数据库
  7. Ubuntu 12.04 wine QQ
  8. Git #1 - 安装git bash
  9. 转换GridView的内容到Excel里面 ---带有格式
  10. RHEL6网络无人值守安装
  11. 【能量检测】基于认知无线电的能量检测算法的matlab仿真
  12. Python数据字典处理Excel,并统计总数,画出饼图
  13. 【Python讲义】WEEK 4
  14. Oracle中根据日期范围进行查询,查询大于某一天的数据,查询小于某一天的数据
  15. 数字身份的万亿市场之争才刚开始
  16. 云计算技术体系结构由这四点组成
  17. 老兵成新秀,科大讯飞能否“嗨唱“车联网?
  18. Vue新手学习笔记:vue-cli框架
  19. 爬楼梯/青蛙跳台阶,不会还有人不会吧
  20. (Python)使用Gdal+Scipy获得Dem的经纬度的高程值(双线性和三次样条内插)

热门文章

  1. Codeforces Round #515 (Div. 3)【未完结】
  2. 【PAT乙级】1064 朋友数 (20 分)
  3. Zookeeper集群搭建分布式
  4. 计算机图形学学习报告,计算机图形学学习报告.pdf
  5. 天然气表怎么看多少方_宝宝奶粉的的营养成分表,到底怎么看?
  6. richtextbox自动滚动到最下面_软网app:滚动截图将超长网页“一网打尽”
  7. js 获得明天0点时间戳_Python 3+Django 3 结合Vue.js框架构建前后端分离Web开发平台实战...
  8. Nginx在Windows平台的配置与使用
  9. 边框border属性总结
  10. JSP的基本构成详解