##// END OF EJS Templates
Add kernel/engine section.
Fernando Perez -
Show More
@@ -274,7 +274,7 b' that provide specialized magics. These typically require additional software'
274 to run and must be manually loaded via ``%load_ext <extension name>``, but are
274 to run and must be manually loaded via ``%load_ext <extension name>``, but are
275 extremely useful. The following extensions are provided:
275 extremely useful. The following extensions are provided:
276
276
277 Cython magics (extension :ref:`octavemagic <extensions_cythonmagic>`)
277 **Cython magics (extension :ref:`cythonmagic <extensions_cythonmagic>`)**
278 This extension provides magics to automatically build and compile Python
278 This extension provides magics to automatically build and compile Python
279 extension modules using the Cython_ language. You must install Cython
279 extension modules using the Cython_ language. You must install Cython
280 separately, as well as a C compiler, for this to work. The examples
280 separately, as well as a C compiler, for this to work. The examples
@@ -289,7 +289,7 b' Cython magics (extension :ref:`octavemagic <extensions_cythonmagic>`)'
289
289
290 .. _cython: http://cython.org
290 .. _cython: http://cython.org
291
291
292 Octave magics (extension :ref:`octavemagic <extensions_octavemagic>`)
292 **Octave magics (extension :ref:`octavemagic <extensions_octavemagic>`)**
293 This extension provides several magics that support calling code written in
293 This extension provides several magics that support calling code written in
294 the Octave_ language for numerical computing. You can execute single-lines
294 the Octave_ language for numerical computing. You can execute single-lines
295 or whole blocks of Octave code, capture both output and figures inline
295 or whole blocks of Octave code, capture both output and figures inline
@@ -309,8 +309,7 b' Octave magics (extension :ref:`octavemagic <extensions_octavemagic>`)'
309 .. _oct2py: http://pypi.python.org/pypi/oct2py
309 .. _oct2py: http://pypi.python.org/pypi/oct2py
310 .. _h5py: http://code.google.com/p/h5py
310 .. _h5py: http://code.google.com/p/h5py
311
311
312
312 **R magics (extension :ref:`rmagic <extensions_rmagic>`)**
313 R magics (extension :ref:`rmagic <extensions_rmagic>`)
314 This extension provides several magics that support calling code written in
313 This extension provides several magics that support calling code written in
315 the R_ language for statistical data analysis. You can execute
314 the R_ language for statistical data analysis. You can execute
316 single-lines or whole blocks of R code, capture both output and figures
315 single-lines or whole blocks of R code, capture both output and figures
@@ -370,7 +369,12 b' attribute is ignored. :ghpull:`1529`.'
370 Improvements to the Qt console
369 Improvements to the Qt console
371 ------------------------------
370 ------------------------------
372
371
373 * changes for easier integration into other projects such as Spyder_.
372 The Qt console continues to receive improvements and refinements, despite the
373 fact that it is by now a fairly mature and robust component. Lots of small
374 polish has gone into it, here are a few highlights:
375
376 * A number of changes were made to the underlying code for easier integration
377 into other projects such as Spyder_ (:ghpull:`2007`, :ghpull:`2024`).
374
378
375 * Improved menus with a new Magic menu that is organized by magic groups (this
379 * Improved menus with a new Magic menu that is organized by magic groups (this
376 was made possible by the reorganization of the magic system
380 was made possible by the reorganization of the magic system
@@ -379,7 +383,7 b' Improvements to the Qt console'
379 * Allow for restarting kernels without clearing the qtconsole, while leaving a
383 * Allow for restarting kernels without clearing the qtconsole, while leaving a
380 visible indication that the kernel has restarted. :ghpull:`1681`.
384 visible indication that the kernel has restarted. :ghpull:`1681`.
381
385
382 * Allow the native display of jpeg image in the qtconsole. :ghpull:`1643`.
386 * Allow the native display of jpeg images in the qtconsole. :ghpull:`1643`.
383
387
384 .. _spyder: https://code.google.com/p/spyderlib
388 .. _spyder: https://code.google.com/p/spyderlib
385
389
@@ -410,7 +414,6 b' of the internal execution parts:'
410 :align: center
414 :align: center
411 :target: ../_static/ipy_013_par_tb.png
415 :target: ../_static/ipy_013_par_tb.png
412
416
413
414 The parallel tools now default to using ``NoDB`` as the storage backend for
417 The parallel tools now default to using ``NoDB`` as the storage backend for
415 intermediate results. This means that the default usage case will have a
418 intermediate results. This means that the default usage case will have a
416 significantly reduced memory footprint, though certain advanced features are
419 significantly reduced memory footprint, though certain advanced features are
@@ -421,7 +424,7 b' other actions with complex display. The ``px`` magic has now both line and cell'
421 modes, and in cell mode finer control has been added about how to collate
424 modes, and in cell mode finer control has been added about how to collate
422 output from multiple engines. :ghpull:`1768`.
425 output from multiple engines. :ghpull:`1768`.
423
426
424 Incremental improvements to SSH launchers:
427 There have also been incremental improvements to the SSH launchers:
425
428
426 * add to_send/fetch steps for moving connection files around.
429 * add to_send/fetch steps for moving connection files around.
427
430
@@ -430,14 +433,9 b' Incremental improvements to SSH launchers:'
430 *remotely*.
433 *remotely*.
431
434
432 This makes the SSHLauncher usable on machines without shared filesystems.
435 This makes the SSHLauncher usable on machines without shared filesystems.
433
434 When sending files, the destination directory must *already exist* - that is,
435 `ipython profile create` may be necessary on the remote system, before the
436 security dir exists for putting the connection file the first
437 time. :ghpull:`1634`.
438
436
439 Add sugar methods/properties to AsyncResult that are generically useful
437 A number of 'sugar' methods/properties were added to AsyncResult that are
440 (:ghpull:`1548`):
438 quite useful (:ghpull:`1548`) for everday work:
441
439
442 * ``ar.wall_time`` = received - submitted
440 * ``ar.wall_time`` = received - submitted
443 * ``ar.serial_time`` = sum of serial computation time
441 * ``ar.serial_time`` = sum of serial computation time
@@ -446,9 +444,9 b' Add sugar methods/properties to AsyncResult that are generically useful'
446 * ``len(ar)`` = # of tasks
444 * ``len(ar)`` = # of tasks
447 * ``ar.wait_interactive()``: prints progress
445 * ``ar.wait_interactive()``: prints progress
448
446
449 Added :meth:`.Client.spin_thread` / :meth:`~.Client.stop_spin_thread` for running
447 Added :meth:`.Client.spin_thread` / :meth:`~.Client.stop_spin_thread` for
450 spin in a background thread, to keep zmq queue clear. This can be used to
448 running spin in a background thread, to keep zmq queue clear. This can be used
451 ensure that timing information is as accurate as possible (at the cost of
449 to ensure that timing information is as accurate as possible (at the cost of
452 having a background thread active).
450 having a background thread active).
453
451
454 Set TaskScheduler.hwm default to 1 instead of 0. 1 has more
452 Set TaskScheduler.hwm default to 1 instead of 0. 1 has more
@@ -461,18 +459,49 b' behavior will be less surprising to new users. :ghpull:`1294`.'
461 Kernel/Engine unification
459 Kernel/Engine unification
462 -------------------------
460 -------------------------
463
461
464 :ghpull:`1640`
462 This is mostly work 'under the hood', but it is actually a *major* achievement
465
463 for the project that has deep implications in the long term: at last, we have
466 Add :func:`IPython.embed_kernel()` as a public API.
464 unified the main object that execute as the user's interactive shell (which
467 Embedding an IPython kernel in an application is useful when you want to use
465 we refer to as the *IPython kernel*) with the objects that run in all the
468 IPython.embed() but don't have a terminal attached on stdin and stdout.
466 worker nodes of the parallel computing facilities (the *IPython engines*).
469
467 Ever since the first implementation of IPython's parallel code back in 2006, we
470 :func:`IPython.parallel.bind_kernel` allows you to promote Engines to listening Kernels,
468 had wanted to have these two roles be played by the same machinery, but a
471 and connect QtConsoles directly to an Engine and debug it directly.
469 number of technical reasons had prevented that from being true.
472
470
473 This also means that Engines are now fully IPython, allowing access to magics,
471 In this release we have now merged them, and this has a number of important
474 etc. in your parallel execution.
472 consequences:
475
473
474 * It is possible to connect any of our clients (qtconsole or terminal console)
475 to any individual parallel engine, with the *exact* behavior of working at a
476 'regular' IPython console/qtconsole. This makes debugging, plotting, etc. in
477 parallel scenarios vastly easier.
478
479 * Parallel engines can always execute arbitrary 'IPython code', that is, code
480 that has magics, shell extensions, etc. In combination with the ``%%px``
481 magics, it is thus extremely natural for example to send to all engines a
482 block of Cython or R code to be executed via the new Cython and R magics. For
483 example, this snippet would send the R block to all active engines in a
484 cluster::
485
486 %%px
487 %%R
488 ... R code goes here
489
490 * It is possible to embed not only an interactive shell with the
491 :func:`IPython.embed` call as always, but now you can also embed a *kernel*
492 with :func:``IPython.embed_kernel()`. Embedding an IPython kernel in an
493 application is useful when you want to use :func:`IPython.embed` but don't
494 have a terminal attached on stdin and stdout.
495
496 * The new :func:`IPython.parallel.bind_kernel` allows you to promote Engines to
497 listening Kernels, and connect QtConsoles directly to an Engine and debug it
498 directly.
499
500 In addition, having a single core object through our entire architecture also
501 makes the project conceptually cleaner, easier to maintain and more robust.
502 This took a lot of work to get in place, but we are thrilled to have this major
503 piece of architecture finally where we'd always wanted it to be.
504
476
505
477 Official Public API
506 Official Public API
478 -------------------
507 -------------------
General Comments 0
You need to be logged in to leave comments. Login now