进程部分

一:进程间通信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. xcode 10 模拟器报错

    xcode 10(也可能是任意版本)run 模拟器时,发现会报下面的错误. This app could not be installed at this time.Could not access ...

  2. C语言之指针若干问题

    1.指针变量的赋值问题. 常常有偷懒的小伙子,这样赋值 int *Pointer =  3:/ 这是给Pointer 所指的变量赋值,刚创建Pointer时,它所指的变量是不固定的,可能是某个重要的系 ...

  3. 拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket

    拼多多微信跳转接口利用了微信官方的weixin://dl/business/?ticket技术,此类接口可以在官方接口中找到,分析代码如下: <title>拼多多</title> ...

  4. 使用 AudioContext 播放音频 解决 谷歌禁止自动播放音频

    window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext || ...

  5. HTTP 返回状态代码

    一.HTTP状态码 如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返回 HTTP 状态代码以响应请求. 此状态 ...

  6. Vue学习之路---No.3(分享心得,欢迎批评指正)

    同样的,我们先来回顾一下昨天学习的内容: 1.利用v-once来组织双向绑定 2.filter{}过滤器的使用(详情请看上一章) 3.computed(计算属性),利用computed属性实现filt ...

  7. 《高性能Mysql》解读---Mysql的事务和多版本并发

    1.base:ACID属性,并发控制 2.MySql事务的隔离级别有哪些,含义是什么? 3.锁知多少,读锁,写锁,排他锁,共享锁,间隙锁,乐观锁,悲观锁. 4.Mysql的事务与锁有什么关联?MySq ...

  8. Python记录wsgi

    类实现wsgi app from wsgiref.util import setup_testing_defaults from wsgiref.simple_server import make_s ...

  9. Install rapyuta client on Raspberry Pi

    Install rapyuta on client sudo git clone -b master https://github.com/cnsdytzy/-Rapyuta-installation ...

  10. Saiku资源帖

    一.精选 1.李秋 随笔分类 - pentaho 二.概述 1.Saiku + Kylin 多维分析平台探索 三.Saiku+Kylin 1.使用Saiku+Kylin构建多维分析OLAP平台 2.使 ...