Pure Python. Easily parallelize Python code.
Parsl provides an intuitive, pythonic way of parallelizing codes by annotating "apps": Python functions or external applications that run concurrently. Natural parallel programming!

Implicit dataflow. Apps execute concurrently while respecting data dependencies.
Parsl creates a dynamic graph of tasks and their data dependencies. Tasks are only executed when their dependencies are met.

Scalable Jupyter notebooks. Easily manage execution across distributed resources.
Parsl works seamlessly with Jupyter notebooks allowing apps within a notebook to be executed in parallel and on remote resources.

Write once, run anywhere. From laptops to supercomputers.
Parsl scripts are independent of the execution environment. A single script can be executed on one or more execution resources without modifying the script.
