Book Image

Mastering IPython 4.0

By : Thomas Bitterman, Dipanjan Deb
Book Image

Mastering IPython 4.0

By: Thomas Bitterman, Dipanjan Deb

Overview of this book

IPython is an interactive computational environment in which you can combine code execution, rich text, mathematics, plots, and rich media. This book will get IPython developers up to date with the latest advancements in IPython and dive deep into interactive computing with IPython. This an advanced guide on interactive and parallel computing with IPython will explore advanced visualizations and high-performance computing with IPython in detail. You will quickly brush up your knowledge of IPython kernels and wrapper kernels, then we'?ll move to advanced concepts such as testing, Sphinx, JS events, interactive work, and the ZMQ cluster. The book will cover topics such as IPython Console Lexer, advanced configuration, and third-party tools. By the end of this book, you will be able to use IPython for interactive and parallel computing in a high-performance computing environment.
Table of Contents (18 chapters)
Mastering IPython 4.0
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
6
Works Well with Others – IPython and Third-Party Tools
Index

Read-Eval-Print Loop (REPL) and IPython architecture


Most interpreted languages follow the same underlying event model—Read-Eval-Print Loop (REPL)—and IPython are no exception. In REPL, interaction with the user is broken down into three steps:

  1. The system reads the input from the user and parses it into an internal format.

  2. The system evaluates the parsed input.

  3. The result of this evaluation is printed to the user.

In a "standard" interpreter, all phases of REPL are executed within the same thread. An important feature of IPython is that the "eval" phase has been separated out into its own process. This process is called a kernel, and it communicates with the other components via messaging. This allows for great flexibility; terminals and kernels can run on different machines, one kernel can support multiple terminals, and development of different terminals and kernels for specialized uses is possible. It also makes for a clean parallel architecture, as will be demonstrated in Chapter 4, Messaging...