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 解析XML文件
Apr 15 Python
Python命名空间详解
Aug 18 Python
Python读取环境变量的方法和自定义类分享
Nov 22 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
python写入文件自动换行问题的方法
Jul 05 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
python调用私有属性的方法总结
Jul 24 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 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/03/03 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
php date()日期时间函数详解
2010/05/16 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
Javascript 强制类型转换函数
2009/05/17 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
jquery ready函数源代码研究
2009/12/06 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
解决python3 pika之连接断开的问题
2018/12/18 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
实习鉴定范文
2013/12/19 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
森林防火宣传标语
2014/06/27 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
销售业务员岗位职责
2015/02/13 职场文书
盗窃案辩护词
2015/05/21 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
宪法宣传标语100条
2019/10/15 职场文书
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android