mpi4py: Replace built-in serialization

2019-07-16 10:44发布

I'd like to replace MPI4PY's built-in Pickle-serialization with dill. According to the doc the class _p_Pickle should have 2 attributes called dumps and loads. However, python says there are no such attributes when i try the following

from mpi4py Import MPI
MPI._p_Pickle.dumps 

-> AttributeError: type object 'mpi4py.MPI._p_Pickle' has no attribute 'dumps'

Where have dumps and loads gone?

2条回答
神经病院院长
2楼-- · 2019-07-16 11:30

In v2.0 you can change it via

MPI.pickle.dumps = dill.dumps
MPI.pickle.loads = dill.loads

It seems that the documentation is still from 2012.

Update For v3.0 see here, i.e.:

MPI.pickle.__init__(dill.dumps, dill.loads)
查看更多
时光不老,我们不散
3楼-- · 2019-07-16 11:41

You are probably using an older version. Use 1.3.1 not 1.2.x. Check the version number with mpi4py.__version__. If you are using 1.3.1 or newer, you can overload dumps and loads with serialization from dill, or cloudpickle, or a some other custom serializer.

>>> import mpi4py
>>> mpi4py.__version__
'1.3.1'
查看更多
登录 后发表回答