我想用 dill 替换 MPI4PY 的内置Pickle
序列化。根据文档, _p_Pickle 类应该有 2 个名为dumps
和的属性loads
。但是,当我尝试以下操作时,python 说没有这样的属性
from mpi4py Import MPI
MPI._p_Pickle.dumps
-> AttributeError:类型对象“mpi4py.MPI._p_Pickle”没有属性“转储”
去哪儿dumps
了loads
?
我想用 dill 替换 MPI4PY 的内置Pickle
序列化。根据文档, _p_Pickle 类应该有 2 个名为dumps
和的属性loads
。但是,当我尝试以下操作时,python 说没有这样的属性
from mpi4py Import MPI
MPI._p_Pickle.dumps
-> AttributeError:类型对象“mpi4py.MPI._p_Pickle”没有属性“转储”
去哪儿dumps
了loads
?
在 v2.0 中,您可以通过
MPI.pickle.dumps = dill.dumps
MPI.pickle.loads = dill.loads
文档似乎仍然是 2012 年的。
对于 v3.0 的更新,请参见此处,即:
MPI.pickle.__init__(dill.dumps, dill.loads)
您可能使用的是旧版本。1.3.1
不使用1.2.x
。使用 .检查版本号mpi4py.__version__
。如果您正在使用1.3.1
或更新版本,您可以重载dumps
并loads
使用来自dill
、 或cloudpickle
或其他一些自定义序列化程序的序列化。
>>> import mpi4py
>>> mpi4py.__version__
'1.3.1'