如何在Python中使用Manager类实现多进程间共享和修改类对象
在python中,我们希望不同的子进程可以共享某个类对象并修改该类对象。这时候我们就需要使用manager类来达到这个目的。 Manager类的本质是一个服务器代理对象。当不同的进程访问该对象时,实际上是向代理服务器发送访问请求。修改后,更改将发送到服务器。

manager的一般用法是:
使用继承BaseManager类的新类(从multiprocessing.managers导入)
注册类中需要共享的类对象:
例如:BaseManager.register('List', List)
并创建管理器对象并开始运行:
经理 = BaseManager()
管理器.start()
列表 = 经理.List()
当然,以上只是示例。实际上,队列等数据结构已经封装在管理器中,不需要注册,可以直接使用。
不过,使用该功能时有一个需要注意的陷阱。即管理器创建的类对象只能访问其成员函数,而不能直接访问其成员变量。这就需要将要划分的类对象的所有成员变量都更改为函数安装,不能随意直接访问。
其次,需要注意的是,当我们使用同一个管理器并在其中注册不同的类对象时,在不同的地方定义管理器对象可能会导致未知的错误。因此,最好的方法应该是在哪里定义它。管理器对象定义了一个从 BaseManager 类继承的新对象,并注册了新的类对象。
下一篇 »
如何通过PHP获取分页总数及实现分页功能