]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-125997: suggest efficient alternatives for `time.sleep(0)` (GH-128752)...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 18 Jan 2025 11:08:42 +0000 (12:08 +0100)
committerGitHub <noreply@github.com>
Sat, 18 Jan 2025 11:08:42 +0000 (11:08 +0000)
gh-125997: suggest efficient alternatives for `time.sleep(0)` (GH-128752)
(cherry picked from commit f4afaa6f1190fbbea3e27c590096951d8ffdfb71)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Doc/library/os.rst
Doc/library/time.rst

index 454e6d769fa555fe8caf447369e1bfef12990178..bc9efd8e6ca450eafb707e9616e9624247272ef3 100644 (file)
@@ -5358,6 +5358,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.
@@ -5449,7 +5451,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, /)
index 6265c2214eaa0dd955ed80a3b7bee3331b0f0851..804e2679027bd4e0c6077ba6023f40c760b31e72 100644 (file)
@@ -385,6 +385,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
@@ -393,12 +395,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.
+
    .. audit-event:: time.sleep secs
 
    .. versionchanged:: 3.5