一、进程之间的数据共享

展望未来,基于消息传递的并发编程是大势所趋

即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。

这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。

但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。

以后我们会尝试使用数据库来解决现在进程之间的数据共享问题。

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}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

python线程间数据共享_python 进程间数据共享multiProcess.Manger实现解析相关推荐

  1. python进程间通信时间开销_python 进程间的通信

    python3,进程间的通信 本文来源于python 3.5版本的官方文档 multiprocessing模块为进程间通信提供了两种方法: 1.进程队列queue The Queue class is ...

  2. python manager 共享数据访问_python 进程间数据共享multiProcess.Manger实现解析

    一.进程之间的数据共享 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据. 这样极大地减少了对使用锁定和其他同步手段的需求, ...

  3. python进程间共享数据_python 进程间共享数据 (二)

    Python中进程间共享数据,除了基本的queue,pipe和value+array外,还提供了更高层次的封装.使用multiprocessing.Manager可以简单地使用这些高级接口. Mana ...

  4. python实现进程通信_python进程间的通讯实现

    1:进程间通讯的方法:apply_async()非阻塞式通讯     apply()阻塞式通讯 2:使用Queue实现对Process创建的进程间通讯, Queue本身是一个消息队列程序,Queue常 ...

  5. python多进程通信manager_python中进程间数据通讯模块multiprocessing.Manager的介绍

    本篇文章给大家带来的内容是关于python中进程间数据通讯模块multiprocessing.Manager的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 目前开发中有遇到进程 ...

  6. python线程池模块_python并发编程之进程池,线程池,协程

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

  7. python线程池模块_python并发编程之进程池,线程池,协程(Python标准模块--concurrent.futures(并发未来))...

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

  8. python 进程间通信效率_(1)进程间几种通信方式

    管道.消息队列.共享内存.信号量.信号.socket 要知道管道.消息队列.共享内存的本质:内存本质.效率以及传输数据要求,各种使用方式 一.管道 管道通信效率低,不适合进程间频繁地交换数据.好处,简 ...

  9. python 线程超时设置_python多任务之总结——(二)线程、协程

    本文主要讲述进程线程协程在python中的使用.主要说明各自的创建.通信及联系与区别,了解各自的适用场景,能更好的利用并发实现多任务开发. 第一部分:python多任务之总结--(一)进程学习 线程 ...

最新文章

  1. Fiddler抓包工具总结(转)
  2. Chapter 5 带颜色的同心圆
  3. PHP的CURL:请求接口 模拟请求登陆 上传下载
  4. window.open 和showModalDialog的返回值
  5. 计算几何 - XOJ 1171 线段求交
  6. CIF进口货物流程图_广州进口报关公司阿根廷红酒上海进口清关成本选择聚海
  7. (45)FPGA面试题格雷码特点及其应用
  8. 视频剪辑软件到底哪个功能强?容易上手并且不要钱的?
  9. python获取类函数的变量-python 动态获取当前运行的类名和函数名的方法
  10. Ajax_使用 jQuery 实现Ajax
  11. 7月20日专家在线访谈“员工上网管理是否可行”
  12. 【算法设计与分析】专栏目录
  13. java 汇率换算_汇率转换示例代码
  14. “天中三少”辛东方:量子动力能传送人到另一个星球?
  15. Linux文件其他操作
  16. 华东理工大学考研计算机难度,华东理工大学(专业学位)计算机技术考研难吗
  17. 英语语法总结--特殊词精讲
  18. 从矿工到农民的失落感
  19. LPCSTR,LPCTSTR,LPCWSTR的区别
  20. 普华永道java面试_新鲜的普华永道面试题来了,四大求职必看

热门文章

  1. postgre 生成数据库html文档_postgresql数据库导入和导出CSV格式
  2. 多个pdf合并成一个pdf_十秒教你将多个PDF如何合并成一个PDF
  3. 如何设置工作流到了某一节点自动执行java方法_2019年JAVA最常见面试题汇总(收藏)...
  4. 矩阵每一行重复_python:19.顺时针打印矩阵
  5. 计算机编程ebcdic码,EBCDIC 与 ASCII 编码相互转换
  6. spine纹理解包 黑底_“包治百病”是真理,这些小众包真的很治愈系
  7. 面板php,自己的路面板添加php扩展
  8. 2.9 while循环
  9. MySql中的时间类型datetime,timestamp,date,year比较
  10. poj 3693 后缀数组