python:多进程的分布式进程multiprocessing.managers

本文详细介绍了Python的multiprocessing模块中的managers子模块,重点讲解了Manager对象的功能,如何创建和使用。Manager允许不同进程通过代理操作共享对象,支持多种数据类型,且能在网络上不同计算机间共享。文中还提到了Manager的特点、使用方法,如with语句的应用,并给出一个简单的Master/Worker分布计算模型示例,强调了Queue在传递任务和接收结果中的作用。此外,文章指出在使用过程中可能会遇到的pickle模块和lambda函数的问题,以及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Server process

Manager()返回一个manager对象,它控制一个服务器进程,这个进程会管理python对象并允许其他进程通过代理的方式来操作这些对象

manager对象支持多对种类型。例子见下

 

from mulitprocessing import Process,Manager

def f(d,l):
    d[1]='1'
    d['2']=2
    d[0.25]=None
    l.reverse()

if __name__=='__main__':
    with Manager() as manager:
        d = manager.dict()
        l = manager.list(range(10))
        
        p = Process(target=f,arge=(d,1))
        p.start()
        p.join()
        print(d)
        print(l)

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会这执行必要的 ‘清理’ 操作,释放资源,比如文件使用后自动关闭,线程中锁的自动获取acquire和release等

with 语句的实现类似try..finally


管理器特点:

  服务器进程管理器比使用共享内存对象更灵活,它们支持二进制对象类型,同时,一个单独的manager可以被网上的不同计算器的进程共享,缺点是比使用shared memory慢

 


Managers:

  managers 提供了创建一种数据的方法,这个数据可以被不同的进程共享,这种共享也包括通过网络在不同计算器的进程上共享

 multiprocessing.Manager()

    返回一个已启动的SyncManager对象(BaseManager

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值