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去除列表中重复元素的方法
Mar 20 Python
python实现爬虫下载美女图片
Jul 14 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
eclipse创建python项目步骤详解
May 10 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
Python csv模块使用方法代码实例
Aug 29 Python
python多线程并发及测试框架案例
Oct 15 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 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控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
2010/01/22 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python3 mmh3安装及使用方法
2019/10/09 Python
Django 自定义分页器的实现代码
2019/11/24 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python阶乘求和的代码详解
2020/02/14 Python
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
大学军训感言200字
2014/02/26 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
工作失职自我检讨书
2015/05/05 职场文书
小学教师见习总结
2015/06/23 职场文书
生活委员竞选稿
2015/11/21 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书