gh-96377: Update asyncio policy doc intro paras to be clear and accurate (GH-97603)

Also fix up some cross-references in the asyncio docs.
(cherry picked from commit cc0f3a10f0)

Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
This commit is contained in:
Miss Islington (bot) 2022-09-27 17:33:32 -07:00 committed by GitHub
parent f391b3c6ab
commit c2ec6da74f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 13 deletions

View file

@ -109,7 +109,7 @@ that the event loop runs in.
There is currently no way to schedule coroutines or callbacks directly There is currently no way to schedule coroutines or callbacks directly
from a different process (such as one started with from a different process (such as one started with
:mod:`multiprocessing`). The :ref:`Event Loop Methods <asyncio-event-loop>` :mod:`multiprocessing`). The :ref:`asyncio-event-loop-methods`
section lists APIs that can read from pipes and watch file descriptors section lists APIs that can read from pipes and watch file descriptors
without blocking the event loop. In addition, asyncio's without blocking the event loop. In addition, asyncio's
:ref:`Subprocess <asyncio-subprocess>` APIs provide a way to start a :ref:`Subprocess <asyncio-subprocess>` APIs provide a way to start a

View file

@ -1,6 +1,8 @@
.. currentmodule:: asyncio .. currentmodule:: asyncio
.. _asyncio-event-loop:
========== ==========
Event Loop Event Loop
========== ==========
@ -92,7 +94,7 @@ This documentation page contains the following sections:
loop APIs. loop APIs.
.. _asyncio-event-loop: .. _asyncio-event-loop-methods:
Event Loop Methods Event Loop Methods
================== ==================
@ -1586,6 +1588,7 @@ Do not instantiate the class directly.
.. _asyncio-event-loops: .. _asyncio-event-loops:
.. _asyncio-event-loop-implementations:
Event Loop Implementations Event Loop Implementations
========================== ==========================
@ -1632,7 +1635,7 @@ on Unix and :class:`ProactorEventLoop` on Windows.
Abstract base class for asyncio-compliant event loops. Abstract base class for asyncio-compliant event loops.
The :ref:`Event Loop Methods <asyncio-event-loop>` section lists all The :ref:`asyncio-event-loop-methods` section lists all
methods that an alternative implementation of ``AbstractEventLoop`` methods that an alternative implementation of ``AbstractEventLoop``
should have defined. should have defined.

View file

@ -37,7 +37,7 @@ Event Loop Methods
================== ==================
See also the main documentation section about the See also the main documentation section about the
:ref:`event loop methods <asyncio-event-loop>`. :ref:`asyncio-event-loop-methods`.
.. rubric:: Lifecycle .. rubric:: Lifecycle
.. list-table:: .. list-table::

View file

@ -7,22 +7,29 @@
Policies Policies
======== ========
An event loop policy is a global per-process object that controls An event loop policy is a global (per-interpreter) object
the management of the event loop. Each event loop has a default used to get and set the current :ref:`event loop <asyncio-event-loop>`,
policy, which can be changed and customized using the policy API. as well as create new event loops.
The default policy can be :ref:`replaced <asyncio-policy-get-set>` with
:ref:`built-in alternatives <asyncio-policy-builtin>`
to use different event loop implementations,
or substituted by a :ref:`custom policy <asyncio-custom-policies>`
that can override these behaviors.
A policy defines the notion of *context* and manages a The :ref:`policy object <asyncio-policy-objects>`
separate event loop per context. The default policy gets and sets a separate event loop per *context*.
defines *context* to be the current thread. This is per-thread by default,
though custom policies could define *context* differently.
By using a custom event loop policy, the behavior of Custom event loop policies can control the behavior of
:func:`get_event_loop`, :func:`set_event_loop`, and :func:`get_event_loop`, :func:`set_event_loop`, and :func:`new_event_loop`.
:func:`new_event_loop` functions can be customized.
Policy objects should implement the APIs defined Policy objects should implement the APIs defined
in the :class:`AbstractEventLoopPolicy` abstract base class. in the :class:`AbstractEventLoopPolicy` abstract base class.
.. _asyncio-policy-get-set:
Getting and Setting the Policy Getting and Setting the Policy
============================== ==============================
@ -40,6 +47,8 @@ for the current process:
If *policy* is set to ``None``, the default policy is restored. If *policy* is set to ``None``, the default policy is restored.
.. _asyncio-policy-objects:
Policy Objects Policy Objects
============== ==============
@ -86,6 +95,8 @@ The abstract event loop policy base class is defined as follows:
This function is Unix specific. This function is Unix specific.
.. _asyncio-policy-builtin:
asyncio ships with the following built-in policies: asyncio ships with the following built-in policies:
@ -117,6 +128,7 @@ asyncio ships with the following built-in policies:
.. availability:: Windows. .. availability:: Windows.
.. _asyncio-watchers: .. _asyncio-watchers:
Process Watchers Process Watchers
@ -270,6 +282,8 @@ implementation used by the asyncio event loop:
.. versionadded:: 3.9 .. versionadded:: 3.9
.. _asyncio-custom-policies:
Custom Policies Custom Policies
=============== ===============