Merge 3.4 (asyncio doc)
This commit is contained in:
commit
4ed3c65e5e
|
@ -649,23 +649,26 @@ Event loop examples
|
||||||
|
|
||||||
.. _asyncio-hello-world-callback:
|
.. _asyncio-hello-world-callback:
|
||||||
|
|
||||||
Hello World with a callback
|
Hello World with call_soon()
|
||||||
---------------------------
|
----------------------------
|
||||||
|
|
||||||
Print ``"Hello World"`` every two seconds using a callback scheduled by the
|
Example using the :meth:`BaseEventLoop.call_soon` method to schedule a
|
||||||
:meth:`BaseEventLoop.call_soon` method::
|
callback. The callback displays ``"Hello World"`` and then stops the event
|
||||||
|
loop::
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
def print_and_repeat(loop):
|
def hello_world(loop):
|
||||||
print('Hello World')
|
print('Hello World')
|
||||||
loop.call_later(2, print_and_repeat, loop)
|
loop.stop()
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
loop.call_soon(print_and_repeat, loop)
|
|
||||||
try:
|
# Schedule a call to hello_world()
|
||||||
|
loop.call_soon(hello_world, loop)
|
||||||
|
|
||||||
|
# Blocking call interrupted by loop.stop()
|
||||||
loop.run_forever()
|
loop.run_forever()
|
||||||
finally:
|
|
||||||
loop.close()
|
loop.close()
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
@ -674,6 +677,42 @@ Print ``"Hello World"`` every two seconds using a callback scheduled by the
|
||||||
uses a :ref:`coroutine <coroutine>`.
|
uses a :ref:`coroutine <coroutine>`.
|
||||||
|
|
||||||
|
|
||||||
|
.. _asyncio-date-callback:
|
||||||
|
|
||||||
|
Display the current date with call_later()
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
Example of callback displaying the current date every second. The callback uses
|
||||||
|
the :meth:`BaseEventLoop.call_later` method to reschedule itself during 5
|
||||||
|
seconds, and then stops the event loop::
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
def display_date(end_time, loop):
|
||||||
|
print(datetime.datetime.now())
|
||||||
|
if (loop.time() + 1.0) < end_time:
|
||||||
|
loop.call_later(1, display_date, end_time, loop)
|
||||||
|
else:
|
||||||
|
loop.stop()
|
||||||
|
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
|
# Schedule the first call to display_date()
|
||||||
|
end_time = loop.time() + 5.0
|
||||||
|
loop.call_soon(display_date, end_time, loop)
|
||||||
|
|
||||||
|
# Blocking call interrupted by loop.stop()
|
||||||
|
loop.run_forever()
|
||||||
|
loop.close()
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
The :ref:`coroutine displaying the current date
|
||||||
|
<asyncio-date-coroutine>` example uses a :ref:`coroutine
|
||||||
|
<coroutine>`.
|
||||||
|
|
||||||
|
|
||||||
.. _asyncio-watch-read-event:
|
.. _asyncio-watch-read-event:
|
||||||
|
|
||||||
Watch a file descriptor for read events
|
Watch a file descriptor for read events
|
||||||
|
|
|
@ -77,30 +77,60 @@ Coroutines (and tasks) can only run when the event loop is running.
|
||||||
|
|
||||||
.. _asyncio-hello-world-coroutine:
|
.. _asyncio-hello-world-coroutine:
|
||||||
|
|
||||||
Example: "Hello World" coroutine
|
Example: Hello World coroutine
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Print ``"Hello World"`` every two seconds using a coroutine::
|
Example of coroutine displaying ``"Hello World"``::
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def greet_every_two_seconds():
|
def hello_world():
|
||||||
while True:
|
print("Hello World!")
|
||||||
print('Hello World')
|
|
||||||
yield from asyncio.sleep(2)
|
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
try:
|
# Blocking call which returns when the hello_world() coroutine is done
|
||||||
loop.run_until_complete(greet_every_two_seconds())
|
loop.run_until_complete(hello_world())
|
||||||
finally:
|
|
||||||
loop.close()
|
loop.close()
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
The :ref:`Hello World with a callback <asyncio-hello-world-callback>`
|
The :ref:`Hello World with call_soon() <asyncio-hello-world-callback>`
|
||||||
example uses a callback scheduled by the :meth:`BaseEventLoop.call_soon`
|
example uses the :meth:`BaseEventLoop.call_soon` method to schedule a
|
||||||
method.
|
callback.
|
||||||
|
|
||||||
|
|
||||||
|
.. _asyncio-date-coroutine:
|
||||||
|
|
||||||
|
Example: Coroutine displaying the current date
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Example of coroutine displaying the current date every second during 5 seconds
|
||||||
|
using the :meth:`sleep` function::
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
|
def display_date(loop):
|
||||||
|
end_time = loop.time() + 5.0
|
||||||
|
while True:
|
||||||
|
print(datetime.datetime.now())
|
||||||
|
if (loop.time() + 1.0) >= end_time:
|
||||||
|
break
|
||||||
|
yield from asyncio.sleep(1)
|
||||||
|
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
# Blocking call which returns when the display_date() coroutine is done
|
||||||
|
loop.run_until_complete(display_date(loop))
|
||||||
|
loop.close()
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
The :ref:`display the current date with call_later()
|
||||||
|
<asyncio-date-callback>` example uses a callback with the
|
||||||
|
:meth:`BaseEventLoop.call_later` method.
|
||||||
|
|
||||||
|
|
||||||
Example: Chain coroutines
|
Example: Chain coroutines
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
Loading…
Reference in New Issue