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模拟登陆阿里妈妈生成商品推广链接
Apr 03 Python
简单介绍Python中的floor()方法
May 15 Python
Python fileinput模块使用实例
Jun 03 Python
Python 迭代器工具包【推荐】
May 06 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
Dec 20 Python
python数据化运营的重要意义
Nov 25 Python
python 函数中的参数类型
Feb 11 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
python开根号实例讲解
Aug 30 Python
PyTorch 如何自动计算梯度
May 23 Python
如何使用python包中的sched事件调度器
Apr 30 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
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python 中文乱码问题深入分析
2011/03/13 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Django中的静态文件管理过程解析
2019/08/01 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
印尼网上商店:Alfacart.com
2019/03/11 全球购物
结婚典礼证婚词
2014/01/11 职场文书
给交警的表扬信
2014/01/12 职场文书
干部培训自我鉴定
2014/01/22 职场文书
社区义诊活动总结
2014/04/30 职场文书
法院信息化建设方案
2014/05/21 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
正确使用MySQL update语句
2021/05/26 MySQL