使用 Python 2.7 ,
我使用从multiprocessing.managers派生的管理器跨进程传递许多大对象。 BaseManager
我希望使用cPickle
作为序列化程序以节省时间;如何才能做到这一点?我看到BaseManager初始化程序采用serializer
参数,但唯一的选项似乎是pickle
和xmlrpclib
。
答案 0 :(得分:2)
您似乎无法严格按照自己的要求行事。
事实上,由于控制序列化程序的能力有限,还有一个多处理的分支pathos,由pickle的另一种创建者dill编写 - 也是因为它的能力有限。
我个人建议您使用ipython.parallel,因为它似乎更积极地维护。
在这篇文章Parallelism and Serialization中详细了解此事。
答案 1 :(得分:1)
我是莳萝和悲情的作者。多处理应默认使用cPickle,因此您不必执行任何操作。
如果您的对象没有搜索,您有两个选择:转到多处理或其他并行后端的分支,或者向您的类添加方法(即简化方法),以注册如何序列化对象。