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

一、进程之间的数据共享

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

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

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

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

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

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进程间通信 multiProcessing Queue队列实现详解Python Multiprocessing多进程 使用tqdm显示进度条的实现Python3多进程 multiprocessing 模块实例详解Python多进程multiprocessing.Pool类详解Python多进程库multiprocessing中进程池Pool类的使用详解Python多进程并发(multiprocessing)用法实例详解Python multiprocessing.Manager介绍和实例(进程间共享数据)利用Python实现在同一网络中的本地文件共享方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值