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 提供了创建一种数据的方法,这个数据可以被不同的进程