如何更改multiprocessing.mangers.BaseManager子类用于cPickle的序列化程序?

时间:2015-04-30 16:01:25

标签: python multiprocessing pickle serializer

使用 Python 2.7

我使用从multiprocessing.managers派生的管理器跨进程传递许多大对象。 BaseManager我希望使用cPickle作为序列化程序以节省时间;如何才能做到这一点?我看到BaseManager初始化程序采用serializer参数,但唯一的选项似乎是picklexmlrpclib

2 个答案:

答案 0 :(得分:2)

您似乎无法严格按照自己的要求行事。

事实上,由于控制序列化程序的能力有限,还有一个多处理的分支pathos,由pickle的另一种创建者dill编写 - 也是因为它的能力有限。

我个人建议您使用ipython.parallel,因为它似乎更积极地维护。

在这篇文章Parallelism and Serialization中详细了解此事。

答案 1 :(得分:1)

我是莳萝和悲情的作者。多处理应默认使用cPickle,因此您不必执行任何操作。

如果您的对象没有搜索,您有两个选择:转到多处理或其他并行后端的分支,或者向您的类添加方法(即简化方法),以注册如何序列化对象。