Show More
@@ -1,13 +1,14 b'' | |||||
1 | .. _execution_semantics: |
|
1 | .. _execution_semantics: | |
2 |
|
2 | |||
3 |
Execution |
|
3 | Execution of cells in the IPython kernel | |
4 |
======================================== |
|
4 | ======================================== | |
5 |
|
5 | |||
6 | The execution of user code consists of the following phases: |
|
6 | When IPython kernel receives `execute_request <https://jupyter-client.readthedocs.io/en/latest/messaging.html#execute>`_ | |
|
7 | with user code, it processes the message in the following phases: | |||
7 |
|
8 | |||
8 | 1. Fire the ``pre_execute`` event. |
|
9 | 1. Fire the ``pre_execute`` event. | |
9 | 2. Fire the ``pre_run_cell`` event unless silent is ``True``. |
|
10 | 2. Fire the ``pre_run_cell`` event unless silent is ``True``. | |
10 |
3. Execute the ``code`` |
|
11 | 3. Execute ``run_cell`` method to preprocess ``code``, compile and run it, see below for details. | |
11 | 4. If execution succeeds, expressions in ``user_expressions`` are computed. |
|
12 | 4. If execution succeeds, expressions in ``user_expressions`` are computed. | |
12 | This ensures that any error in the expressions don't affect the main code execution. |
|
13 | This ensures that any error in the expressions don't affect the main code execution. | |
13 | 5. Fire the ``post_execute`` event. |
|
14 | 5. Fire the ``post_execute`` event. | |
@@ -18,9 +19,15 b' The execution of user code consists of the following phases:' | |||||
18 | :doc:`/config/callbacks` |
|
19 | :doc:`/config/callbacks` | |
19 |
|
20 | |||
20 |
|
21 | |||
21 | To understand how the ``code`` field is executed, one must know that Python |
|
22 | Running user ``code`` | |
22 | code can be compiled in one of three modes (controlled by the ``mode`` argument |
|
23 | ===================== | |
23 | to the :func:`compile` builtin): |
|
24 | ||
|
25 | First, the ``code`` cell is transformed to expand ``%magic`` and ``!system`` | |||
|
26 | by ``IPython.core.inputtransformer2``. Then is being compiled using standard | |||
|
27 | Python :func:`compile` function and executed. | |||
|
28 | ||||
|
29 | Not specific to IPython, all Python code can be compiled in one of three modes | |||
|
30 | (see ``mode`` argument to the standard :func:`compile` function): | |||
24 |
|
31 | |||
25 | *single* |
|
32 | *single* | |
26 | Valid for a single interactive statement (though the source can contain |
|
33 | Valid for a single interactive statement (though the source can contain | |
@@ -50,16 +57,16 b" execution in 'single' mode, and then:" | |||||
50 |
|
57 | |||
51 | - If there is more than one block: |
|
58 | - If there is more than one block: | |
52 |
|
59 | |||
53 |
* if the last |
|
60 | * if the last block is a single line long, run all but the last in 'exec' mode | |
54 | and the very last one in 'single' mode. This makes it easy to type simple |
|
61 | and the very last one in 'single' mode. This makes it easy to type simple | |
55 | expressions at the end to see computed values. |
|
62 | expressions at the end to see computed values. | |
56 |
|
63 | |||
57 |
* if the last |
|
64 | * if the last block is no more than two lines long, run all but the last in | |
58 | 'exec' mode and the very last one in 'single' mode. This makes it easy to |
|
65 | 'exec' mode and the very last one in 'single' mode. This makes it easy to | |
59 | type simple expressions at the end to see computed values. - otherwise |
|
66 | type simple expressions at the end to see computed values. - otherwise | |
60 | (last one is also multiline), run all in 'exec' mode |
|
67 | (last one is also multiline), run all in 'exec' mode | |
61 |
|
68 | |||
62 |
* otherwise (last |
|
69 | * otherwise (last block is also multiline), run all in 'exec' mode as a single | |
63 | unit. |
|
70 | unit. | |
64 |
|
71 | |||
65 |
|
72 |
General Comments 0
You need to be logged in to leave comments.
Login now