并发 --- 32 管道 事件 信号量 进程池
一.管道(多个时数据不安全) 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 管道 事件 信号量 进程池相关推荐
- 05 Python 并发编程(管道,事件,信号量,进程池)
管道 Conn1,conn2 = Pipe() Conn1.recv() Conn1.send() 数据接收一次就没有了 from multiprocessing import Process,Pip ...
- 8-26-GLI锁与普通互斥锁、死锁问题、递归锁、信号量、Event事件、并发的tcp通信、进程池线程池
昨日回顾1 生产者消费者-在生产者和消费者之间,通过队列,增加缓冲,避免了生产者和消费者之间交互-Queue,redis,rabbitmq,kafka-解耦合,队列是微服务的基础2 线程理论,开启-进 ...
- Python 之并发编程之manager与进程池pool
一.manager 常用的数据类型:dict list 能够实现进程之间的数据共享 进程之间如果同时修改一个数据,会导致数据冲突,因为并发的特征,导致数据更新不同步. def work(dic, lo ...
- python 多进程并发(进程池)
前言 最近在处理大数据相关的东西,数据动辄上百万,还不能用 GPU 加速,于是开始动起了多进程的念头.众所周知,Python 的多线程是假的,不过好在开发者老大还是给我们留了一个活路,也就是进程池.这 ...
- Python进程池Pool、进程池通信
前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...
- python 进程池实现 pool
进程池实现 必要性 进程的创建和销毁过程消耗的资源比较多 当任务量众多,每个任务在很短时间内完成时,需要平方的创建和销毁进程,此时对计算机压力比较大 进程池技术很好的解决了以上问题 原理 创建一定数量 ...
- python 进程间同步_python之路29 -- 多进程与进程同步(进程锁、信号量、事件)与进程间的通讯(队列和管道、生产者与消费者模型)与进程池...
所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了.至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠 ...
- 进程同步控制(锁,信号量,事件), 进程通讯(队列和管道,生产者消费者模型) 数据共享(进程池和mutiprocess.Pool模块)...
参考博客 https://www.cnblogs.com/xiao987334176/p/9025072.html#autoid-1-1-0 进程同步(multiprocess.Lock.Semaph ...
- 网络编程7_ multiprocessing类-管道.数据共享, 信号量,事件,进程池
一. multiprocessing类 6. 管道 进程间通信(ipc)方式二: 管道会导致数据不安全的情况, 后面我们会说到为什么会带来数据不安全的问题 创建管道的类: ...
最新文章
- Effective C++ item01 尽量以const enum inline替换#define
- Mybatis XML文件的异常
- 相声演员侯耀文突发疾病去世享年59岁 深切怀念
- oracle 11g 1033,ORACLE出现错误1033和错误ORA-00600的解决方法
- 北京大学孙俊教授课题组深度视频研究室招收2021级博士生
- CFUpdate上传控件的使用
- roi计算_计算开放式硬件项目的ROI的6个步骤
- linux打开文件命令_详解Linux中3个文件查找相关命令
- 吴恩达|机器学习作业6.0支持向量机(SVM)
- 常用快捷键—Webstorm入门指南
- EAS BOS序时簿界面排序
- DRM dumb,prime介绍
- 37Java流程控制-打印三角形及debug练习
- git解决fatal: unable to access ‘https://gitee.com/XXX.git/‘: The requested returned error: 403
- element input限制输入数字
- JavaScript聊天器
- SQL Server2008下载链接以及安装教程
- docker启动失败原因
- python中如何比较日期大小_python 日期大小比较
- 硬盘主扩展分区,基本动态磁盘等概念