并发班-忘仙通信0501_第1页
并发班-忘仙通信0501_第2页
并发班-忘仙通信0501_第3页
并发班-忘仙通信0501_第4页
并发班-忘仙通信0501_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Python并发班教室讲师:Tuple时间:2018年1月教学监督热线 教学监督热线 01020304阶段一: 独立的进程内存空间与 共享的服务器进程空间阶段二: 线程间共享的全局变量 与同步锁的基本概念 阶段三: 线程与进程安全的队列阶段四: 消费者与生产者模式本节知识点阶段一独立的进程内存空间与共享的服务器进程空间教学监督热线 共享进程空间知识点010203知识点一: 进程间通信的限制知识点二: 进程间通信的解决方案知识点三: Manger对象的基本使用互不干扰的独立内存空间我们想的只是不能修改变量但是,深层次问题是,这个进程与那个进程完全失去了联系进程间通信的解决方案1. 管理器负责与公

2、共进程通信2. 代理负责操作共享的空间Manger对象的基本使用一般常用的空间类型是:1. mgr.list()2. mgr.dict()3. mgr.Queue()关于Queue()我们稍后演示阶段二线程间共享的全局变量与同步锁的基本概念教学监督热线 线程同步的基本知识010203知识点一: 线程间也会出现进程间通信的问题嘛? 知识点二: 如果不会,是否会产生一些问题?知识点三: 有没有解决这个问题的方法?线程间全局变量的共享提示!因为线程属于同一个进程,因此它们之间共享内存区域。因此全局变量是公共的。共享内存间存在竞争问题提示! 如果1000000不能出现效果可以继续在后面加0使用锁来控制

3、共享资源的访问阶段三线程与进程安全的队列教学监督热线 队列的问题引入010203问题一: Python有没有专门用于 进程或线程通信的数据结构?问题二: 这个数据结构算公共资源嘛?问题三: 我们是否需要对其加锁?队列的基本概念一个入口,一个出口先入先出(FIFO)线程安全队列操作一览入队: put(item)出队: get()测试空: empty() # 近似 测试满: full() # 近似队列长度: qsize() # 近似任务结束: task_done()等待完成: join()queue.Queue进程安全队列操作一览入队: put(item)出队: get(block)测试空: em

4、pty() # 近似 测试满: full() # 近似队列长度: qsize() # 近似mgr.Queue其他问题解释队列算公共资源嘛?我们是否需要对其加锁?答:如果只是一个线程/进程在使用,那么它并不算公共资源。但是一旦多个线程/进程在同时使用,那么它就是一个公共资源。答:如果被当作公共资源使用,那么按理说是必须要加锁的。但是,线程安全或进程安全的队列中已经帮我们实现了锁。因此我们不需要再自己使用锁来同步。阶段四消费者与生产者模式教学监督热线 消费-生产模式 问题引入010203问题一: 什么是消费者 与生产者模式?问题二: 为什么需要消费者 与生产者模式?问题三: 如何通过队列实现 消费者与生产者模式?消费者与生产者模式的概念所谓,生产者与消费者模型,其实是把一个需要进程通信的问题分开考虑生产者,只需要往队列里面丢东西(生产者不需要关心消费者)消费者,只需要从队列里面拿东西(消费者也不需要关心生产者)消费者与生产者模式的应用Web服务器与Web框架之间的关系uwsgi / gunicorn多线程的消费者与生产者模式生产者:只关心队列是否已满。没满,则生产,满了就阻塞。消费者:只关心队

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论