12_进程,线程,协程,IO多路复用的区别
1.进程
1.进程可以使用计算机多核
2.进程是资源分配的单位
3.进程的创建要比线程消耗更多的资源效率很低
4.进程空间独立,数据安全性跟好操作有专门的进程间通信方式
5.一个进程可以包含多个线程,线程共享进程资源
6.进程有自己特有资源
7.多进程根据cpu核数不一样可能是并行的
2.线程
1.线程可以使用计算机多核
2.线程是操作系统调度的单位
3.线程切换从系统层面保存和恢复CPU上下文以及每个线程自己的缓存Cache等数据,切换时需要的资源一般效率一般
4.线程使用全局变量通信,必须要和同步互斥机制配合防止产生资源争夺
5.一个线程中可以包含多个协程函数,协程函数共享线程资源
6.线程有自己特有资源
7.多线程根据cpu核数不一样可能是并行的
3.协程
1.协程只能用到计算机单核
2.协程对事件的监听是在应用层完成,没有占有到内核资源
3.协程的切换通过应用层记录程序的上下文栈区,因此切换任务资源很小效率高
4.协程无需进行同步互斥操作,对IO并发性极好
5.可以通过调度时的参数实现一个协程函数完成多协程并发
6.协程的特有资源即调用时传递的参数
7.协程是在一个线程中所以是并发
4.IO多路复用
1.IO多路复用只能用到计算机单核
2.IO多路复用对事件的监听是在内核中完成的,占用到一定的内核资源
3.IO多路复用切换是通过内核的上下文栈区,因此切换任务资源很小效率高
4.IO多路复用无需进行同步互斥操作,对IO并发性极好
5.可以通过调度时的参数实现一个IO多路复用函数完成多IO多路复用并发
6.IO多路复用的特有资源即调用时传递的参数
7.IO多路复用是在一个线程中所以是并发
5.使用场景
1.需要创建较多的并发任务比较简单线程比较合适
2.如果程序间数据资源使用重叠比较多,要考虑到线程锁是否需要更复杂的逻辑
3.如果多个任务无关联性,不易用多线程将其融入到一个进程中
4.Python线程不适用语计算密集型并发,适合IO密集型并发
12_进程,线程,协程,IO多路复用的区别的更多相关文章
- 进程&线程&协程
进程 一.基本概念 进程是系统资源分配的最小单位, 程序隔离的边界系统由一个个进程(程序)组成.一般情况下,包括文本区域(text region).数据区域(data region)和堆栈(stac ...
- Python 进程线程协程 GIL 闭包 与高阶函数(五)
Python 进程线程协程 GIL 闭包 与高阶函数(五) 1 GIL线程全局锁 线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的 ...
- python自动化开发学习 进程, 线程, 协程
python自动化开发学习 进程, 线程, 协程 前言 在过去单核CPU也可以执行多任务,操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换任务2,任务2执行0.01秒,在切换到任务3,这 ...
- 多道技术 进程 线程 协程 GIL锁 同步异步 高并发的解决方案 生产者消费者模型
本文基本内容 多道技术 进程 线程 协程 并发 多线程 多进程 线程池 进程池 GIL锁 互斥锁 网络IO 同步 异步等 实现高并发的几种方式 协程:单线程实现并发 一 多道技术 产生背景 所有程序串 ...
- Python并发编程系列之常用概念剖析:并行 串行 并发 同步 异步 阻塞 非阻塞 进程 线程 协程
1 引言 并发.并行.串行.同步.异步.阻塞.非阻塞.进程.线程.协程是并发编程中的常见概念,相似却也有却不尽相同,令人头痛,这一篇博文中我们来区分一下这些概念. 2 并发与并行 在解释并发与并行之前 ...
- 协程IO多路复用
协程:单线程下实现并发并发:伪并行,遇到IO就切换,单核下多个任务之间切换执行,给你的效果就是貌似你的几个程序在同时执行.提高效率任务切换 + 保存状态并行:多核cpu,真正的同时执行串行:一个任务执 ...
- day 35 协程 IO多路复用
0.基于socket发送Http请求 import socket import requests # 方式一 ret = requests.get('https://www.baidu.com/s?w ...
- Python之路--协程/IO多路复用
引子: 之前学习过了,线程,进程的概念,知道了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位.按道理来说我们已经算是把CPU的利用率提高很多了.但是我们知道无论是创建多进程还是创建多 ...
- python的进程/线程/协程
1.python的多线程 多线程就是在同一时刻执行多个不同的程序,然而python中的多线程并不能真正的实现并行,这是由于cpython解释器中的GIL(全局解释器锁)捣的鬼,这把锁保证了同一时刻只有 ...
随机推荐
- SpringBoot设置跨域的几种方式
什么是跨域? 浏览器从一个域名的网页去请求另一个域名的资源时,域名.端口.协议任一不同,都是跨域 原因: 由于浏览器的同源策略, 即a网站只能访问a网站的内容,不能访问b网站的内容. 注意: 跨域问题 ...
- 连通图算法详解之① :Tarjan 和 Kosaraju 算法
相关阅读: 双连通分量 ,割点和桥 简介 在阅读下列内容之前,请务必了解 图论相关概念 中的基础部分. 强连通的定义是:有向图 G 强连通是指,G 中任意两个结点连通. 强连通分量(Strongly ...
- 又一个小而美的Java Web框架: Solon!
Solon 是Java世界里一个新的极易上手的Web框架.参考过 Javalin . Spring 等很多现有框架的设计. 取名自海贼王里的角色,说是希能像他一样能打 小.真的是小.最小的运行单位只有 ...
- pandas | 详解DataFrame中的apply与applymap方法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第5篇文章,我们来聊聊pandas的一些高级运算. 在上一篇文章当中,我们介绍了panads的一些计算方法, ...
- Scss 定义内层class的简单写法
如果定义样式的时候,内层样式名称和外层保持一致的话可以简写如下 如果一个样式下有相关的其他样式可以使用 &-xxx 来简写, <template> <div class=&q ...
- 一文看懂 Netty 架构设计
本文重点分析 Netty 的逻辑架构及关键的架构质量属性,希望有助于大家从 Netty 的架构设计中汲取营养,设计出高性能.高可靠性和可扩展的程序. Netty 的三层架构设计 Netty 采用了典型 ...
- linux 命令行安装谷歌浏览器
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 2. yum install -y ls ...
- dota2输入法无候选框?
win10自带的微软拼音在dota2中不会显示候选框,或者说是选词框. 这种情况下只能选择其他输入法. 我选择的是搜狗输入法(此随笔添加时的最新版),在dota2中有选词框. 网上有些人说要改兼容性, ...
- 解决React路由跳转时出现的红色警告: Warning: Failed prop type: Invalid prop `component` of type `object` supplied to `Route`, expected `function`.
一.报警如图: 二.查找路由版本 我使用路由版本是4.3.1的,然后我测试所有4.0+版本都会出现以上警告. 三.未解决前的代码 三.我又解读了一下报警告内容的大致意思:就是props需要通过函数返回 ...
- asp.net core 应用docke部署到centos7
前言 前期准备 win10 (不要安装hyper-V) VMware-Workstation-Pro/15.0 Xshell6 (非必需) VS2019 以上环境请自行安装 都是默认安装没什么可说的 ...