一.管道(多个时数据不安全)   Pipe 类

    (像队列一样,数据只能取走一次)

  conn1,conn2 = Pipe()     建立管道

  .send()   发送

  .recv()   接收

二.事件(等待)     Event类

  名 = Event()   建立一个事件(默认状态为False)  名.set()   改变值为True  名.clear()  改变值为False  名.is_set()  查看事件的状态  名.wait()   如果状态是False 阻塞              True  不阻塞

三.信号量    Semaphore类

   (进程锁时只允许串行,而信号量允许多个)

  内部维护了一个计数器,acquire-1,release+1,

  为0的时候,其他的进程都要在acquire之前等待

  名 = Semaphore(数量)

  名.acquire()

  锁的代码

  名.release()

四.进程池(进程的创建和销毁是很有消耗的,影响代码执行效率)

  名 = Pool(数量)

  1.   名.map(函数,迭代):异步提交任务,并且传参需要可迭代类型的数据,

              自带close和join功能

多进程和进程池的效率比较:

  2.res = apply(f1,args=(i,))  #同步执行任务,必须等任务执行结束

      才能给进程池提交下一个任务,可以直接拿到返回结果res

  3.res_obj = apply_async(f1,args=(i,))  #异步提交任务,

    可以直接拿到结果对象,从结果对象里面拿结果,要用get方法,

    get方法会阻塞程序,没有拿到结果会一直等待

  4.Close : 锁住进程池,防止有其他的新的任务在提交给进程池

      Join : 等待着进程池将自己里面的任务都执行完

五.回调函数(进程池Pool类)

  Apply_async(f1,args=(i,),callback=function)

  #将前面f1这个任务的返回结果作为参数传给callback指定的那个function函数

转载于:https://www.cnblogs.com/amirky/p/10268589.html

并发 --- 32 管道 事件 信号量 进程池相关推荐

  1. 05 Python 并发编程(管道,事件,信号量,进程池)

    管道 Conn1,conn2 = Pipe() Conn1.recv() Conn1.send() 数据接收一次就没有了 from multiprocessing import Process,Pip ...

  2. 8-26-GLI锁与普通互斥锁、死锁问题、递归锁、信号量、Event事件、并发的tcp通信、进程池线程池

    昨日回顾1 生产者消费者-在生产者和消费者之间,通过队列,增加缓冲,避免了生产者和消费者之间交互-Queue,redis,rabbitmq,kafka-解耦合,队列是微服务的基础2 线程理论,开启-进 ...

  3. Python 之并发编程之manager与进程池pool

    一.manager 常用的数据类型:dict list 能够实现进程之间的数据共享 进程之间如果同时修改一个数据,会导致数据冲突,因为并发的特征,导致数据更新不同步. def work(dic, lo ...

  4. python 多进程并发(进程池)

    前言 最近在处理大数据相关的东西,数据动辄上百万,还不能用 GPU 加速,于是开始动起了多进程的念头.众所周知,Python 的多线程是假的,不过好在开发者老大还是给我们留了一个活路,也就是进程池.这 ...

  5. Python进程池Pool、进程池通信

    前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...

  6. python 进程池实现 pool

    进程池实现 必要性 进程的创建和销毁过程消耗的资源比较多 当任务量众多,每个任务在很短时间内完成时,需要平方的创建和销毁进程,此时对计算机压力比较大 进程池技术很好的解决了以上问题 原理 创建一定数量 ...

  7. python 进程间同步_python之路29 -- 多进程与进程同步(进程锁、信号量、事件)与进程间的通讯(队列和管道、生产者与消费者模型)与进程池...

    所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了.至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠 ...

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

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

  9. 网络编程7_ multiprocessing类-管道.数据共享, 信号量,事件,进程池

    一. multiprocessing类     6. 管道     进程间通信(ipc)方式二: 管道会导致数据不安全的情况, 后面我们会说到为什么会带来数据不安全的问题     创建管道的类:    ...

最新文章

  1. Effective C++ item01 尽量以const enum inline替换#define
  2. Mybatis XML文件的异常
  3. 相声演员侯耀文突发疾病去世享年59岁 深切怀念
  4. oracle 11g 1033,ORACLE出现错误1033和错误ORA-00600的解决方法
  5. 北京大学孙俊教授课题组深度视频研究室招收2021级博士生
  6. CFUpdate上传控件的使用
  7. roi计算_计算开放式硬件项目的ROI的6个步骤
  8. linux打开文件命令_详解Linux中3个文件查找相关命令
  9. 吴恩达|机器学习作业6.0支持向量机(SVM)
  10. 常用快捷键—Webstorm入门指南
  11. EAS BOS序时簿界面排序
  12. DRM dumb,prime介绍
  13. 37Java流程控制-打印三角形及debug练习
  14. git解决fatal: unable to access ‘https://gitee.com/XXX.git/‘: The requested returned error: 403
  15. element input限制输入数字
  16. JavaScript聊天器
  17. SQL Server2008下载链接以及安装教程
  18. docker启动失败原因
  19. python中如何比较日期大小_python 日期大小比较
  20. 硬盘主扩展分区,基本动态磁盘等概念

热门文章

  1. Linux磁盘分区之fdisk命令
  2. 腾讯 AlloyTeam 正式发布 Canvas 魔幻线条 - curvejs
  3. MySQL中NOT IN语句对NULL值的处理
  4. sed 删除行首空格
  5. PHP 中和 HTTP 相关的函数及使用
  6. 微信JS SDK Demo 官方案例
  7. 学习 Message(11): 测试 TWMMouse 结构相关的鼠标消息
  8. 【EhCache】Java缓存框架使用EhCache结合Spring AOP
  9. WSUS 3.0系列之二 补丁分发
  10. 研究员详述巴基斯坦黑客如何攻击印度和阿富汗政府