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:` |
|
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 |
|
|
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 | |||
@@ -431,13 +434,8 b' Incremental improvements to SSH launchers:' | |||||
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 |
|
436 | |||
434 | When sending files, the destination directory must *already exist* - that is, |
|
437 | A number of 'sugar' methods/properties were added to AsyncResult that are | |
435 | `ipython profile create` may be necessary on the remote system, before the |
|
438 | quite useful (:ghpull:`1548`) for everday work: | |
436 | security dir exists for putting the connection file the first |
|
|||
437 | time. :ghpull:`1634`. |
|
|||
438 |
|
||||
439 | Add sugar methods/properties to AsyncResult that are generically useful |
|
|||
440 | (:ghpull:`1548`): |
|
|||
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 |
|
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 |
|
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,17 +459,48 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: | |
|
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. | |||
475 |
|
504 | |||
476 |
|
505 | |||
477 | Official Public API |
|
506 | Official Public API |
General Comments 0
You need to be logged in to leave comments.
Login now