进程部分

一:进程间通信IPC机制:由于进程之间的内存空间是相互隔离的,所以为了进程间的通信需要一个共享的内存空间,

但是共享带来的问题是数据在写的时候就不安全了,所以需要一种机制既有能共享的内存

空间,又能解决锁的问题。

有两种解决方案:一种叫管道,另一种叫队列。其中队列就是管道加锁实现的。这两种方式

占用的都是内存空间,但是管道无法解决锁的问题,所以还是要选择队列。例图1:

二:生产者消费者模型:

1:什么是生产者消费者模型:

生产者:代指生产数据的任务

消费者:代指处理数据的任务

该模型的工作方式:生产者生产数据传递给消费者处理

实现方式:生产者把数据放到队列里,然后消费者从队列里取出数据进行处理。

生产者----->队列<------消费者

2:为何要用生产者消费者模型:

当程序中明显的出现两类任务,一类负责生产数据,一类负责处理数据,
                               就可以引入生产者消费者模型来实现生产者与消费者的解耦合,平衡
                               生产能力与消费能力,从而提升效率。  例图2:

但是通过以上案例我们可以发现需求实现了,但是程序一直没有结束,原因是消费者还在

等待着从队列中取数据,尽管此时队列已经空了。所以消费者无法结束,那么主进程也无法

结束,所以才导致整个程序一直没有结束。

所以现在需要让消费者在消费完所有生产者生产的数据后,结束运行。

例图3:还有另外一种,例图3了解:

原理都是一样:都是在主进程里面等待生产者生产完数据后,发出结束信号就可以了。

线程部分:线程理论:

1:什么是线程:

进程其实一个资源单位,而进程内的线程才是cpu上的执行单位
                               线程其实指的就是代码的执行过程

2:为何要用线程:       线程vs进程

①:同一进程下的多个线程共享该进程内的资源
                              ②:创建线程的开销要远远小于进程

开启线程的两种方式:

方式一(图4):通过threading模块,导入类Thread来开启线程,通过类Thread实例化得到对象,

然后调用对象下的start方法,来开启一个线程。 如图4

方式二(图5):通过自定义一个类的方式来开启线程。如图5:

线程对象相关的属性或方法:

1:同一进程下的多个线程共享该进程内的资源          如图6:

2:pid:通过os模块,os模块下有一个os.getpid        如图7:

3:active_count:可以查看线程活跃的个数               如图8:

4:current_thread:可以查看当前线程                      如图9:

守护线程(daemon):守护主线程,一旦主线程结束了,那么守护的子线程也直接结束了。    如图10

线程互斥锁:原理:将并发变成串行,牺牲效率,保证数据安全。  如图11:

   

  

       

       

   

   

进程部分(IPC机制及生产者消费者模型)和线程部分的更多相关文章

  1. 4、网络并发编程--僵尸进程、孤儿进程、守护进程、互斥锁、消息队列、IPC机制、生产者消费者模型、线程理论与实操

    昨日内容回顾 操作系统发展史 1.穿孔卡片 CPU利用率极低 2.联机批处理系统 CPU效率有所提升 3.脱机批处理系统 CPU效率极大提升(现代计算机雏形) 多道技术(单核CPU) 串行:多个任务依 ...

  2. 进程间通信IPC机制和生产者消费者模型

    1.由于进程之间内存隔离,那么要修改共享数据时可以利用IPC机制 我们利用队列去处理相应数据 #管道 #队列=管道+锁 from multiprocessing import Queue # q=Qu ...

  3. python多进程之IPC机制以及生产者消费者模型

    1.进程间通信(IPC机制) 第一种:管道 import subprocessres=subprocess.Popen('dir',shell=True, stdout=subprocess.PIPE ...

  4. IPC机制和生产者消费者模型

    IPC机制:(解决进程间的数据隔离问题) 进程间通信:IPC(inter-Process Comminication) 创建共享的进程列队,Queue 是多进程的安全列队,可以使用Queue 实现多进 ...

  5. 消息队列,IPC机制(进程间通信),生产者消费者模型,线程及相关

    消息队列 创建 ''' Queue是模块multiprocessing中的一个类我们也可以这样导入from multiprocessing import Queue,创 建时queue = Queue ...

  6. Python之网路编程之-互斥锁与进程间的通信(IPC)及生产者消费者模型

    一.互斥锁 进程之间数据隔离,但是共享一套文件系统,因而可以通过文件来实现进程直接的通信,但问题是必须自己加锁处理. 注意:加锁的目的是为了保证多个进程修改同一块数据时,同一时间只能有一个修改,即串行 ...

  7. 进程同步控制(锁,信号量,事件), 进程通讯(队列和管道,生产者消费者模型) 数据共享(进程池和mutiprocess.Pool模块)

    参考博客 https://www.cnblogs.com/xiao987334176/p/9025072.html#autoid-1-1-0 进程同步(multiprocess.Lock.Semaph ...

  8. 4月25日 python学习总结 互斥锁 IPC通信 和 生产者消费者模型

    一.守护进程 import random import time from multiprocessing import Process def task(): print('name: egon') ...

  9. python_way ,day11 线程,怎么写一个多线程?,队列,生产者消费者模型,线程锁,缓存(memcache,redis)

    python11 1.多线程原理 2.怎么写一个多线程? 3.队列 4.生产者消费者模型 5.线程锁 6.缓存 memcache redis 多线程原理 def f1(arg) print(arg) ...

随机推荐

  1. iStatistica Pro for mac(mac系统监视器)

    iStatistica Pro for mac是一款运行在Mac平台上的mac系统监视器,你可以使用iStatistica pro for mac破解版轻松查看PAM使用情况.CPU信息.磁盘信息.本 ...

  2. 微信小程序wx.uploadFile 上传文件 的两个坑

    fileUpload: function (tempFilePath) { var that = this;//坑1: this需要这么处理 wx.uploadFile({ url: url地址, / ...

  3. [LeetCode] 120. Triangle _Medium tag: Dynamic Programming

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  4. #WEB安全基础 : HTTP协议 | 0x16 HTTPS:加密的秘密

    公开秘钥加密&&共享秘钥加密 这两个冗长的短语,让我拿什么理解? 我们知道HTTPS有加密功能,以上的两个短语很常用.先摆在这,接下来开始尝试理解它们. 共享秘钥加密(对称秘钥加密): ...

  5. Linux部署Java环境

    一. yum安装jdk (1) 搜索jdk安装包 yum search java|grep jdk (2) 下载jdk1.8,下载之后默认的目录为: /usr/lib/jvm/ yum install ...

  6. sql多行多列重复

      在sql的查询中我们会遇到查询的结果比如这样的: 查询这张表的sql语句: select r.ROLE_NAME,u.USERID,u.USERNAME,u.TrueName from BASE_ ...

  7. (3)打造简单OS-MBR引导区转移加载简单程序(突破512限制)

    在第一节<(1)汇编写入引导区,虚拟机启动步骤>中讲解到一个简单屏幕显示一川字符串,第二节讲到BIOS启动过程! 第一节中基本原理就是将那个汇编代码用nasm汇编器进行汇编成二进制,然后把 ...

  8. 我所知道的JavaScript中判断数据类型

    相信一提到怎么判断js的数据类型,大家都会想到的是typeof.instanceof,那么为什么有了typeof的存在还要有instanceof? typeof? 根据MDN:typeof操作符返回一 ...

  9. Vue系列之 => webpack结合vue使用

    安装 npm i vue -S ,  在html页面中放一个容器绑定到el上. 修改webpack.config.js , 在与entry , output节点平级加上 resolve 节点. res ...

  10. .NET Core 微服务

    github 上的资源: EshopOnContainers AiurSoft : 微服务框架 Server酱:是一款「程序员」和「服务器」之间的通信软件. http://sc.ftqq.com/3. ...