From 5cb84ed5b19206671205b16be0f0dc2480ffed40 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 4 Feb 2014 18:18:27 +0100 Subject: [PATCH] asyncio doc: add an example to schedule a coroutine from a different thread --- Doc/library/asyncio-dev.rst | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Doc/library/asyncio-dev.rst b/Doc/library/asyncio-dev.rst index 481910843b2..1e82474194c 100644 --- a/Doc/library/asyncio-dev.rst +++ b/Doc/library/asyncio-dev.rst @@ -13,12 +13,15 @@ Concurrency and multithreading ------------------------------ An event loop runs in a thread and executes all callbacks and tasks in the same -thread. If a callback should be scheduled from a different thread, the -:meth:`BaseEventLoop.call_soon_threadsafe` method should be used. +thread. While a task in running in the event loop, no other task is running in +the same thread. But when the task uses ``yield from``, the task is suspended +and the event loop executes the next task. -While a task in running in the event loop, no other task is running in the same -thread. But when the task uses ``yield from``, the task is suspended and the -event loop executes the next task. +To schedule a callback from a different thread, the +:meth:`BaseEventLoop.call_soon_threadsafe` method should be used. Example to +schedule a coroutine from a different:: + + loop.call_soon_threadsafe(asyncio.async, coro_func()) To handle signals and to execute subprocesses, the event loop must be run in the main thread.