python 进程间数据共享multiProcess.Manger实现解析


Posted in Python onSeptember 23, 2019

一、进程之间的数据共享

展望未来,基于消息传递的并发编程是大势所趋

即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。

这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。

但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。

以后我们会尝试使用数据库来解决现在进程之间的数据共享问题。

1.1 Manager模块介绍

虽然进程间数据独立,但可以通过Manager实现数据共享,事实上Manager的功能远不止于此。

A manager object returned by Manager() controls a server process which holds Python objects and allows other processes to manipulate them using proxies.

A manager returned by Manager() will support types list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Barrier, Queue, Value and Array.

1.2 Manager例子

manager这里可以共享列表,字典等很多数据类型

from multiprocessing import Manager,Process,Lock
def work(d,lock):
  lock.acquire()
  d['count'] -= 1
  lock.release()
if __name__ == '__main__':
  lock = Lock()
  with Manager() as m:
    dic = m.dict({'count':100})#生成一个字典,可在多个进程间共享和传递
    p_l = []
    for i in range(100):
      p = Process(target=work,args=(dic,lock))
      p_l.append(p)
      p.start()
    for p in p_l: #等待结果
      p.join()
    print(dic)

{'count':0}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的并发编程实例
Jul 07 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
python中的错误处理
Apr 10 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
python实现人民币大写转换
Jun 20 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
Python求均值,方差,标准差的实例
Jun 29 Python
python输入多行字符串的方法总结
Jul 02 Python
OpenCV 模板匹配
Jul 10 Python
python爬虫增加访问量的方法
Aug 22 Python
python批量替换文件名中的共同字符实例
Mar 05 Python
python程序 线程队列queue使用方法解析
Sep 23 #Python
python程序 创建多线程过程详解
Sep 23 #Python
详解python播放音频的三种方法
Sep 23 #Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 #Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 #Python
Python3 pandas 操作列表实例详解
Sep 23 #Python
详解基于python-django框架的支付宝支付案例
Sep 23 #Python
You might like
献给php初学者(入门学习经验谈)
2010/10/12 PHP
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
JavaScript中常用的运算符小结
2012/01/18 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
节约能源标语
2014/06/17 职场文书
导游词开场白
2015/01/31 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
匿名信格式范文
2015/05/27 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers