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 相关文章推荐
如何搜索查找并解决Django相关的问题
Jun 30 Python
python使用urlparse分析网址中域名的方法
Apr 15 Python
基于scrapy实现的简单蜘蛛采集程序
Apr 17 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
python对视频画框标记后保存的方法
Dec 07 Python
简单了解python数组的基本操作
Nov 26 Python
如何基于Python实现电子邮件的发送
Dec 16 Python
Python reduce函数作用及实例解析
May 08 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 Python
Python字典实现伪切片功能
Oct 28 Python
Python制作春联的示例代码
Jan 22 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
JavaScript中的Window窗口对象
2008/01/16 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
JS实现图片切换效果
2018/11/17 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
浅析Python函数式编程
2018/10/06 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
物业经理求职自我评价
2013/09/22 职场文书
党风廉设责任书
2014/04/16 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
白鹤梁导游词
2015/02/06 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书