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之os操作方法(详解)
Jun 15 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
Python子类继承父类构造函数详解
Feb 19 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
Aug 12 Python
python监控nginx端口和进程状态
Sep 06 Python
python3图片文件批量重命名处理
Oct 31 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
Nov 29 Python
Python面向对象编程基础实例分析
Jan 17 Python
python中np是做什么的
Jul 21 Python
Pytest单元测试框架如何实现参数化
Sep 05 Python
python中四舍五入的正确打开方式
Jan 18 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你的验证码安全码?
2007/01/02 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
js技巧--转义符"\"的妙用
2007/01/09 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
JavaScript 常用函数库详解
2009/10/21 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
input框中的name和id的区别
2016/11/16 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
Python编程深度学习计算库之numpy
2018/12/28 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python制作词云图代码实例
2019/09/09 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
国贸专业个人求职信分享
2013/12/04 职场文书
毕业生的自我评价范文
2013/12/31 职场文书
公司投资建议书
2014/05/16 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
幽默导游词开场白
2015/05/29 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
Python实现简繁体转换
2021/06/07 Python
python3 字符串str和bytes相互转换
2022/03/23 Python