一 : 科普一分钟

尽管进程间是独立存在的,不能相互访问彼此的数据,但是在python中却存在进程间的通信方法,来帮助我们可以利用多核CPU也能共享数据.

对于多线程其实也是存在一些缺点的,不是任何场景我们都用多线程来完成并发处理任务,因为CPU操作线程,所以线程多了,对于计算机的资源消耗是十分严重的,多线程适合IO操作密集的任务,那么怎么办呢, 协程的出现帮我们解决了这个问题 ,协程是比线程更小的一个单位,但是它的作用却不容忽视.

二 : 多进程

1.多进程简单了解 :

进程之间是独立的,是操作系统自己来维护和管理的,python通过C接口起了一个进程,多进程可以充分的利用多核CPU

2. 多进程的创建 :

3. 多进程间的通信 :

进程间独立,如果想相互访问,就必须有一个中间翻译,下面提供了几种进程间通信的方法。

进程Queue

解析 :

Queue通信,相当于父进程赋值了一个Queue给子进程,子进程在这个Queue放好数据后,序列化一个中间翻译,然后在反序列化返回给父进程,

因为进程之间内存独立,不能传递对象传递的其实就是序列化的数据

Pipe

多进程还有一种数据传递方式叫管道原理和 Queue相同

4. 进程锁

虽然内存独立,但是即使是打印也会造成打印数据错误,为了防止进程间抢屏幕打印输出,加了进程锁。

5. 进程池

创建一个子进程相当于copy一份父进程内存数据,为了防止频繁创建,导致内存不足,所以有了进程池作为限制。

三 : 协程

1. 协程的简单了解 :

协程又称微线程,coroutne,协程是一种用户态的轻量级线程。通俗点讲就是周末我在家里休息,假如我先洗漱,再煮饭,再下载电影看会很慢,用了协程的效果就好比,我在下载电影的时候去点火煮饭,此时我马上洗漱,等我洗漱好了,饭也好了,吃完饭了,电影下好了,我可以看了。

2. 协程的创建和使用:

gevent 是一个三方库,可以轻松通过gevent实现并发同步或者异步编程。

解析:尝试运行发现,运行时间为Sleep最长的时间,也就是说协程能绕过IO,进行执行,极大的提高了效率.

IO(从硬盘上读一块数据,从网络读数据,从内存里读一块数据) 操作不占用CPU,计算占用CPU

3. 协程简单爬网页 :

4. 协程实现socketServer:

通过协程,我们可以写出一个socketServer,真正socketServer的底层是用多线程来实现,我们用写成写出的效率很高,而且非常节省内存

四 : 总结

协程的优点:

线程在单线程下切换,减少资源消耗

无需原子操作控制流,简化编程模型

高并发,高扩展,低成本.

无论是多进程,多线程还是协程在不同的场景用不同的模型才能高效的完成任务.

python多核cpu_Python中的多核CPU共享数据之协程详解相关推荐

  1. python协程详解

    目录 python协程详解 一.什么是协程 二.了解协程的过程 1.yield工作原理 2.预激协程的装饰器 3.终止协程和异常处理 4.让协程返回值 5.yield from的使用 6.yield ...

  2. python协程详解_python协程详解

    原博文 2019-10-25 10:07 − # python协程详解 ![python协程详解](https://pic2.zhimg.com/50/v2-9f3e2152b616e89fbad86 ...

  3. Python 协程详解

    目录 什么是协程 Python 对协程的支持经历了多个版本: 一.协程实现方法: 1.greenlet,早期模块 2.yield关键字(Python2.x开始) 3.asyncio装饰器(Python ...

  4. python在统计专业的应用_Python统计学一数据的概括性度量详解

    一.数据的概括性度量 1.统计学概括: 统计学是应用数学的一个分支,主要通过利用概率论建立数学模型,收集所观察系统的数据,进行量化的分析.总结,并进而进行推断和预测,为相关决策提供依据和参考.统计学主 ...

  5. python运行错误-Python在运行中发生错误怎么正确处理方法,案例详解!

    在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因.在操作系统提供的调用中,返回错误码非常常见.比如打开文件的函数open(),成功时返回文件描 ...

  6. 【转载】Python线程、进程和协程详解

    从操作系统角度 操作系统处理任务,调度单位是进程和线程. 进程:表示一个程序的执行活动(打开程序.读写程序数据.关闭程序) 线程:执行某个程序时,该进程调度的最小执行单位(执行功能1,执行功能2) 一 ...

  7. Python进程、线程、协程详解

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

  8. 线程和协程详解-python

    1.前言 关于基本概念部分这里不再详述,可以参考之前的文章或者自行查阅相关文章. 由于python中线程的创建.属性和方法和进程很相似,这里也不再讲解. 这里重点讲解下多线程访问共享数据的相关问题. ...

  9. python 协程详解教程

    一.协程的概念 协程:是单线程下的并发,又称微线程,纤程.英文名Coroutine. 一句话说明什么是协程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的. cpu正在运行一个任务,会 ...

最新文章

  1. 大量的 TIME_WAIT 状态 TCP 连接,对业务有什么影响?
  2. MVC小型商务网站实例(2)--项目架构
  3. BLE 安全之虫洞攻击
  4. android使用apache http包链接servlet
  5. 课时85.层叠性(掌握)
  6. rcp异步多参数实例
  7. 利用Linux的强大移植性和兼容性将操作系统轻松安装到硬盘
  8. Ubuntu 安装与使用 Rootkit 扫描程序
  9. 大数据技术原理与应用(第三版)林子雨教材配套实验答案---实验二 熟悉常用的hdfs操作
  10. 如何处理计算机显示器故障,电脑显示器常见的故障及解决办法
  11. Centos6.8系统镜像下载
  12. 听说你想去大厂看学妹,带你看看小米前端实习岗面试长啥样?
  13. Android12之OpenSL ES中IObject_Realize和CEngine_Realize区别(十四)
  14. PLSQL13,登录进去的时候有个弹窗,选择后同时勾选了dont show this message again,下次不再显示了,但是又想让他继续提示怎么办?
  15. 今年9月开学!香港科技大学(广州)人工智能专业已开始招生!
  16. 阿里云学生机使用nginx搭建点播服务器
  17. 自动控制原理——线性系统的根轨迹分析法
  18. 无领导小组讨论面试真题解析(五)——沙漠求生记
  19. 向unity Asset Store提交资源-边做边记
  20. 苹果电脑打不出中文逗号句号

热门文章

  1. 求关于运动的英语(收集)
  2. command对象和DataReader的学习
  3. java8 Lambda Stream collect Collectors 常用实例
  4. Winform—C#读写config配置文件
  5. Android SurfaceFlinger
  6. cmake安装配置及入门指南
  7. 函数的动态参数和作用域
  8. [MYSQL]如何并发查询并更新
  9. 推断一个图片是不是伪造的方法
  10. Android开发学习之路-机器学习库(图像识别)、百度翻译