[3.12] gh-125997: suggest efficient alternatives for time.sleep(0) (GH-128752) (#128985)

This commit is contained in:
Bénédikt Tran 2025-01-18 12:13:03 +01:00 committed by GitHub
parent fbbef609d1
commit 3d9b14c19b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 2 deletions

View file

@ -5058,6 +5058,8 @@ information, consult your Unix manpages.
The following scheduling policies are exposed if they are supported by the
operating system.
.. _os-scheduling-policy:
.. data:: SCHED_OTHER
The default scheduling policy.
@ -5149,7 +5151,7 @@ operating system.
.. function:: sched_yield()
Voluntarily relinquish the CPU.
Voluntarily relinquish the CPU. See :manpage:`sched_yield(2)` for details.
.. function:: sched_setaffinity(pid, mask, /)

View file

@ -367,6 +367,8 @@ Functions
The suspension time may be longer than requested by an arbitrary amount,
because of the scheduling of other activity in the system.
.. rubric:: Windows implementation
On Windows, if *secs* is zero, the thread relinquishes the remainder of its
time slice to any other thread that is ready to run. If there are no other
threads ready to run, the function returns immediately, and the thread
@ -375,12 +377,19 @@ Functions
<https://learn.microsoft.com/windows-hardware/drivers/kernel/high-resolution-timers>`_
which provides resolution of 100 nanoseconds. If *secs* is zero, ``Sleep(0)`` is used.
Unix implementation:
.. rubric:: Unix implementation
* Use ``clock_nanosleep()`` if available (resolution: 1 nanosecond);
* Or use ``nanosleep()`` if available (resolution: 1 nanosecond);
* Or use ``select()`` (resolution: 1 microsecond).
.. note::
To emulate a "no-op", use :keyword:`pass` instead of ``time.sleep(0)``.
To voluntarily relinquish the CPU, specify a real-time :ref:`scheduling
policy <os-scheduling-policy>` and use :func:`os.sched_yield` instead.
.. versionchanged:: 3.5
The function now sleeps at least *secs* even if the sleep is interrupted
by a signal, except if the signal handler raises an exception (see