Based on the explanation on [mpi4py](http://mpi4py.scipy.org/docs/mpi4py.pdf), I do not understand if it is using pickle, or it is more efficient than pickle. Initially, the document states:

> 
> The pickle (slower, written in pure Python) and cPickle (faster,
>  written in C) modules provide user-extensible facilities to serialize
>  generic Python objects using ASCII or binary formats. The marshal
>  module provides facilities to serialize built-in Python objects using
>  a binary format specific to Python, but independent of machine
>  architecture issues.
> 
> 
> 

Based on this, it seems pickle is the slowest method. The document then says:

> 
> MPI for Python can communicate any built-in or used-defined Python
>  object taking advantage of the features provided by the mod:pickle
>  module.
> 
> 
> 

So is MPI using the slowest option Pickle? There is more text but I do not see a straightforward answer, maybe it is not straight forward implementation? Am I totally mis-understanding what it is saying?