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之入门(五)缩进和选择
May 27 Python
Python中的闭包实例详解
Aug 29 Python
Python实现把回车符\r\n转换成\n
Apr 23 Python
Python脚本实现自动发带图的微博
Apr 27 Python
python 读写txt文件 json文件的实现方法
Oct 22 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
对Python中画图时候的线类型详解
Jul 07 Python
Python pandas对excel的操作实现示例
Jul 21 Python
用python制作个音乐下载器
Jan 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
PHP 正则表达式小结
2015/02/12 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
python 七种邮件内容发送方法实例
2014/04/22 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
教师年终个人自我评价
2013/10/04 职场文书
质检员的岗位职责
2013/11/15 职场文书
师生聚会感言
2014/01/26 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
新学期主题班会
2015/08/17 职场文书
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python