# Using IPython for parallel computing

> Release:

>   8.8.0

> Date:

>   May 13, 2025

## Installing IPython Parallel

As of 4.0, IPython parallel is now a standalone package called `ipyparallel`. You can install it with:

    pip install ipyparallel

or:

    conda install ipyparallel

As of IPython Parallel 7, this will include installing/enabling an extension for both the classic Jupyter Notebook and JupyterLab ≥ 3.0.

## Quickstart

IPython Parallel

A quick example to:

1. allocate a cluster (collection of IPython engines for use in parallel)

2. run a collection of tasks on the cluster

3. wait interactively for results

4. cleanup resources after the task is done

    import time
    import ipyparallel as ipp

    task_durations = [1] * 25
    # request a cluster
    with ipp.Cluster() as rc:
        # get a view on the cluster
        view = rc.load_balanced_view()
        # submit the tasks
        asyncresult = view.map_async(time.sleep, task_durations)
        # wait interactively for results
        asyncresult.wait_interactive()
        # retrieve actual results
        result = asyncresult.get()
    # at this point, the cluster processes have been shutdown

You can similarly run MPI code using IPyParallel (requires mpi4py):

    import ipyparallel as ipp

    def mpi_example():
        from mpi4py import MPI
        comm = MPI.COMM_WORLD
        return f"Hello World from rank {comm.Get_rank()}. total ranks={comm.Get_size()}"

    # request an MPI cluster with 4 engines
    with ipp.Cluster(engines='mpi', n=4) as rc:
        # get a broadcast_view on the cluster which is best
        # suited for MPI style computation
        view = rc.broadcast_view()
        # run the mpi_example function on all engines in parallel
        r = view.apply_sync(mpi_example)
        # Retrieve and print the result from the engines
        print("\n".join(r))
    # at this point, the cluster processes have been shutdown

Follow the tutorial to learn more.

## Contents

- Tutorial
  - Overview and getting started
  - Starting the IPython controller and engines
  - IPython’s Direct interface
  - Parallel Magic Commands
  - The IPython task interface
  - The AsyncResult object
  - Parallel examples
- Reference
  - Using MPI with IPython
  - IPython’s Task Database
  - Security details of IPython Parallel
  - DAG Dependencies
  - Details of Parallel Computing with IPython
  - Messaging for Parallel Computing
  - Connection Diagrams of The IPython ZMQ Cluster
  - Launchers

- examples
  - Tutorials
  - Examples
  - Integrating IPython Parallel with other tools
  - Non-notebook examples

- Changelog

# IPython Parallel API

- API Reference
  - `version_info`
  - Classes
  - Decorators
  - Exceptions

# Indices and tables

- Index

- Module Index

- Search Page