Usually, a parallel algorithm needs to move data between different engines. One way to do so is by doing a pull and then a push using the direct view. However, this method is quite slow since all the data has to go through the controller to the client and then back through the controller, to its final destination. A much better way of moving data between engines is to use a message passing library, such as the Message Passing Interface (MPI). IPython's parallel computing architecture has been designed to integrate with MPI. To download and install Windows MPI, readers can refer to https://msdn.microsoft.com/en-us/library/bb524831%28v=vs.85%29.aspx.
In addition, you could install the mpi4py package.