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判断变量是否已经定义的方法
Aug 18 Python
详解在Python程序中解析并修改XML内容的方法
Nov 16 Python
Python正则表达式实现截取成对括号的方法
Jan 06 Python
Python格式化日期时间操作示例
Jun 28 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
Python3中列表list合并的四种方法
Apr 19 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
python集合常见运算案例解析
Oct 17 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
三个python爬虫项目实例代码
Dec 28 Python
Python中的面向接口编程示例详解
Jan 17 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生成UTF8文件的方法
2010/05/15 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
常用的 JS 排序算法 整理版
2018/04/05 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
Mac 上切换Python多版本
2017/06/17 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
2019/10/24 Python
基于Django实现日志记录报错信息
2019/12/17 Python
python logging.info在终端没输出的解决
2020/05/12 Python
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
学生会离职感言
2014/02/11 职场文书
岗位职责怎么写
2014/03/14 职场文书
商场主管竞聘书
2014/03/31 职场文书
小学二年级学生评语
2014/04/21 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
MySQL多表查询机制
2022/03/17 MySQL
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js