Get Lanyrd on your mobile (iPhone, Android and more) - check it out here

IPython in-depth: high-productivity interactive and parallel python

A session at PyCon US 2012

IPython provides tools for interactive and parallel computing that are widely used in scientific computing, but can benefit any Python developer. We will show how to use IPython in different ways, as: an interactive shell, an embedded shell, a graphical console, a network-aware VM in GUIs, a web-based notebook with code, graphics and rich HTML, and a high-level framework for parallel computing.

IPython started as a better interactive Python interpreter in 2001, but over the last decade it has grown into a rich and powerful set of interlocking tools aimed at maximizing developer productivity with Python while using the language interactively.

Today, IPython consists of a kernel that executes the user code and controls the user's namespace, and a collection of tools to control this kernel either in-process or out-of-process thanks to a well-specified communications protocol implemented over ZeroMQ. The kernel can do much more than execute user code, including introspection of objects in the user's namespace, detailed error reporting with rich tracebacks, history logging of inputs and outputs with an SQLite backend, a user-extensible system of commands for interactive control that don't collide with user variables, and much more.
Our communications architecture allows these same features to be accessed via a variety of clients, each providing unique functionality tuned to a specific use case. We expose a number of directly usable applications:

An interactive, terminal-based shell with many capabilities far beyond the default Python interactive interpreter (this is the default application opened by the ipython command that most users are familiar with).

A Qt console that provides the look and feel of a terminal, but adds support for inline figures, graphical calltips, a persistent session that can survive crashes (even segfaults) of the kernel process, and more. A user-based review of some of these features can be found here.

A web-based notebook that can execute code and also contain rich text and figures, mathematical equations and arbitrary HTML. This notebook controls the same kernel as the other two applications, but instead of offering a linear, terminal-like workflow, it presents a document-like view with cells where code is executed but that can be edited in-place, reordered, mixed with explanatory text and figures, etc. This model is a kind of literate programming environment popular in scientific computing and pioneered by the Mathematica system, that allows for the creation of rich documents that combine computational experimentation and results with other explanatory elements. A detailed review of this system can be found here.

A high-performance, low-latency system for parallel computing that supports the control of a cluster of IPython engines communicating over ZeroMQ, with optimizations that minimize unnecessary copying of large objects (especially numpy arrays). These engines can be controlled interactively while developing and doing exploratory work, or can run in batch mode either on a local machine or in a large cluster/supercomputing environment via a batch scheduler.

In this hands-on, in-depth tutorial, we will briefly describe IPython's architecture and will then show how to use and configure each of the above components. We will also discuss how to use the underlying IPython libraries in your own application to provide interactive control.

An outline of the tutorial follows:

  • Introductory description of the project and architecture.
  • IPython basics: the magic command system, shell aliases, full shell access, the history system, variable caching, object introspection tools.
  • Development workflow: combining the interpreter session with python files via the %run command.
  • Effective use of IPython at the command-line for typical development tasks: timing, profiling, debugging.
  • Embedding IPython in terminal applications.
  • The IPython Qt console: unique features beyond the terminal.
  • Embedding an IPython kernel in a GUI app to expose network-based interactive control.
  • Configuring IPython: the profile and configuration system for multiple applications.
  • The IPython notebook: interactive usage of the application, the IPython display protocol, defining custom display methods for your own objects, generating HTML and PDF output.
  • Parallelism with IPython: basic architecture, interactive control of a cluster, standalone execution of applications, integration with MPI, blocking and asynchronous parallelism, execution in batch-controlled environments, IPython engines in the cloud (illustrated with Amazon EC2 instances).

A short listing of other features not covered in this tutorial, as guidance for users to later learn about on their own.

For full details about IPython including documentation, previous presentations and videos of talks, please see the project website.

About the speakers

This person is speaking at this event.
Brian E. Granger
This person is speaking at this event.
Min Ragan-Kelley

IPython, pyzmq, ptsg, xoopic. pep8 is my enemy bio from Twitter

This person is speaking at this event.
Fernando Pérez

Physicist, applied mathematician, scientific Python developer. Research scientist at UC Berkeley, climber when I can get away from the computer. bio from Twitter

Next session in F2

1:20pm The real-time web with co-routines by John Anderson

Coverage of this session

Sign in to add slides, notes or videos to this session

Tell your friends!

When

Time 9:00am12:20pm PST

Date Wed 7th March 2012

Short URL

lanyrd.com/spbwb

Official session page

us.pycon.org/…e/presentation/121/

View the schedule

Topics

See something wrong?

Report an issue with this session