##// END OF EJS Templates
updating overview to include two-process model
Paul Ivanov -
Show More
@@ -15,9 +15,12 b' is somewhat limited for extended interactive use.'
15 15
16 16 The goal of IPython is to create a comprehensive environment for
17 17 interactive and exploratory computing. To support this goal, IPython
18 has two main components:
18 has three main components:
19 19
20 20 * An enhanced interactive Python shell.
21 * A decoupled two-process communication model, which allows for multiple
22 clients to connect to a computation kernel, most notably the web-based
23 :ref:`notebook <htmlnotebook>`
21 24 * An architecture for interactive parallel computing.
22 25
23 26 All of IPython is open source (released under the revised BSD license).
@@ -172,11 +175,42 b' Main features of the interactive shell'
172 175 prompts and whitespace) and uses doctest-compatible prompts and
173 176 output, so you can use IPython sessions as doctest code.
174 177
178 Decoupled two-process model
179 ==============================
180
181 IPython has abstracted and extended the notion of a traditional
182 *Read-Evaluate-Print Loop* (REPL) environment by decoupling the *evaluation*
183 into its own process. We call this process a kernel: it receives execution
184 instructions from clients and communicates the results back to them.
185
186 This decoupling allows us to have several clients connected to the same
187 kernel, and even allows clients and kernels to live on different machines.
188 With the exclusion of the traditional single process terminal-based IPython
189 (what you start if you run ``ipython`` without any subcommands), all
190 other IPython machinery uses this two-process model. This includes ``ipython
191 console``, ``ipython qtconsole``, and ``ipython notebook``.
192
193 As an example, this means that when you start ``ipython qtconsole``, you're
194 really starting two processes, a kernel and a Qt-based client can send
195 commands to and receive results from that kernel. If there is already a kernel
196 running that you want to connect to, you can pass the ``--existing`` flag
197 which will skip initiating a new kernel and connect to the most recent kernel,
198 instead. To connect to a specific kernel once you have several kernels
199 running, use the ``%connect_info`` magic to get the unique connection file,
200 which will be something like ``--existing kernel-19732.json`` but with
201 different numbers which correspond to the Process ID of the kernel.
202
203 You can read more about using :ref:`ipython qtconsole <qtconsole>`, and
204 :ref:`ipython notebook <htmlnotebook>`. There is also a :ref:`message spec
205 <messaging>` which documents the protocol for communication between kernels
206 and clients.
207
208
175 209 Interactive parallel computing
176 210 ==============================
177 211
178 212 Increasingly, parallel computer hardware, such as multicore CPUs, clusters and
179 supercomputers, is becoming ubiquitous. Over the last 3 years, we have
213 supercomputers, is becoming ubiquitous. Over the last 8 years, we have
180 214 developed an architecture within IPython that allows such hardware to be used
181 215 quickly and easily from Python. Moreover, this architecture is designed to
182 216 support interactive and collaborative parallel computing.
General Comments 0
You need to be logged in to leave comments. Login now