]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add a sequence diagram for the chained coroutines example
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 12 Dec 2013 11:35:17 +0000 (12:35 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 12 Dec 2013 11:35:17 +0000 (12:35 +0100)
Doc/library/asyncio-task.rst
Doc/library/tulip_coro.dia [new file with mode: 0644]
Doc/library/tulip_coro.png [new file with mode: 0644]

index afcfea84a2aad23cb47ca1484aefa99b17d1c131..836125740212e95d13a6a611d463c33883116259 100644 (file)
@@ -74,7 +74,6 @@ Print ``"Hello World"`` every two seconds using a coroutine::
     loop = asyncio.get_event_loop()
     loop.run_until_complete(greet_every_two_seconds())
 
-
 .. seealso::
 
    :ref:`Hello World example using a callback <asyncio-hello-world-callback>`.
@@ -104,6 +103,16 @@ Example chaining coroutines::
 ``compute()`` is chained to ``print_sum()``: ``print_sum()`` coroutine waits
 until ``compute()`` is completed before returing its result.
 
+Sequence diagram of the example:
+
+.. image:: tulip_coro.png
+   :align: center
+
+The diagram shows the logical links between the task and the two coroutines, it
+does not describe exactly how things work internally. For example, the sleep
+coroutine creates an internal future which uses
+:meth:`BaseEventLoop.call_later` to wake up the task in 1 second.
+
 
 InvalidStateError
 -----------------
diff --git a/Doc/library/tulip_coro.dia b/Doc/library/tulip_coro.dia
new file mode 100644 (file)
index 0000000..c4e19a0
Binary files /dev/null and b/Doc/library/tulip_coro.dia differ
diff --git a/Doc/library/tulip_coro.png b/Doc/library/tulip_coro.png
new file mode 100644 (file)
index 0000000..e083bc3
Binary files /dev/null and b/Doc/library/tulip_coro.png differ