2014-02-14 23 views
1

我想用蒔蘿替換MPI4PY的內置Pickle序列化。根據doc,_p_Pickle類應該有2個屬性dumpsloads。然而,蟒蛇說,有沒有這樣的屬性,當我嘗試以下方法mpi4py:替換內置序列號

from mpi4py Import MPI 
MPI._p_Pickle.dumps 

- > AttributeError的:對象類型「mpi4py.MPI._p_Pickle」有沒有屬性「傾銷」

凡具備dumpsloads走了?

+0

也許我使用的是舊版本?如何檢查mpi4py版本?當我嘗試「MPI.VERSION」時,它說2 ... MPI.Get_Version給出了(版本,Subversion)對應的(2,1)。自從最新版本是1.3以來,我很困惑。什麼...... –

+0

也許'MPI.Version'告訴你下劃線MPI實現的版本。你在使用MPICH(最新版本:3.0)嗎?或openmpi(1.7)?或...... mpicc -show'的輸出是什麼? – francis

回答

0

您可能正在使用舊版本。使用1.3.1而不是1.2.x。用mpi4py.__version__檢查版本號。如果您使用的是1.3.1或更新版本,則可以使用dillcloudpickle或其他一些自定義串行器的序列號重載dumpsloads

>>> import mpi4py 
>>> mpi4py.__version__ 
'1.3.1' 
2

在V2.0中,您可以通過

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

改變它看來,文檔仍然是來自2012年

更新 對於V3.0看到here,即:

MPI.pickle.__init__(dill.dumps, dill.loads)