mirror of
https://github.com/python/cpython.git
synced 2026-01-07 16:02:55 +00:00
gh-125997: suggest efficient alternatives for time.sleep(0) (#128752)
This commit is contained in:
parent
d5e9aa690a
commit
f4afaa6f11
2 changed files with 13 additions and 2 deletions
|
|
@ -5411,6 +5411,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.
|
||||
|
|
@ -5514,7 +5516,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, /)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue