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 13 Python
从零学Python之入门(三)序列
May 25 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
利用Python脚本生成sitemap.xml的实现方法
Jan 31 Python
快速入门python学习笔记
Dec 06 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
python路径的写法及目录的获取方式
Dec 26 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
python 常见的反爬虫策略
Sep 27 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
python 爬取天气网卫星图片
Jun 07 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调用Oracle存储过程的方法
2008/09/12 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
JavaScript this 深入理解
2009/07/30 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
上海微创软件面试题
2012/06/14 面试题
求职简历自荐信范文
2013/10/21 职场文书
卫校护理专业毕业生求职信
2013/11/26 职场文书
迎接领导欢迎词
2014/01/11 职场文书
教师网络培训感言
2014/03/09 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
企业安全生产标语
2014/06/06 职场文书
标准版离职证明书
2014/09/12 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
红色故事汇观后感
2015/06/18 职场文书