asyncio doc: add an example with Future

This commit is contained in:
Victor Stinner 2013-12-09 12:40:17 +01:00
parent 52ce3b04d0
commit 45c2fd9f8a
1 changed files with 24 additions and 0 deletions

View File

@ -408,3 +408,27 @@ Details:
* ``wait_task()`` stops the event loop when ``print_sum()`` is done.
Example: Future and get result
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Example combining a :class:`Future` and a :ref:`coroutine <coroutine>`::
import asyncio
@asyncio.coroutine
def slow_operation(future):
yield from asyncio.sleep(1)
future.set_result('Future in done!')
loop = asyncio.get_event_loop()
future = asyncio.Future()
asyncio.Task(slow_operation(future))
loop.run_until_complete(future)
print(future.result())
loop.close()
The example waits for the completion of the future (which takes 1 second). The
coroutine is responsible of the computation. The event loop is notified when
the future is done (see the :meth:`Future.set_result` method).