python / python/cpython

Issues in asyncio documentation section "A homemade asyncio.sleep"

Ouverte
#143,727 6 commentaires 0 réactions 1 personne assignée Voir sur GitHub

@willingc y travaille déjà.

Depuis le 23/7/2026.

  • #143850 par @anordin95 — ouverte
docs topic-asyncio
Langage dominant
Python
Étoiles
77.2k
Forks
35.9k
Métriques de merge des PR
Métriques de PR en attente

Description

Documentation

Link to section:
https://docs.python.org/3/howto/a-conceptual-overview-of-asyncio.html#a-homemade-asyncio-sleep

From my perspective, there are two issues in this section:

  1. Creating a task for the sleep call in main (await asyncio.create_task(async_sleep(3))) hides if the implementation actually cedes control to the event loop as desired or if it blocks it - an implementation using time.sleep(seconds) would also behave sane here. Therefore, I think it should be changed to await async_sleep(3).
  2. The implementation is said to mimick asyncio.sleep(), which can make readers think that this could actually be a usable replacement that behaves similarly. However, in one crucial aspect it behaves the opposite way: It causes 100% CPU usage on one core due to the busy waiting approach, which is opposed to how a sleep should behave. Two options I see:
  • Add something like: "Note: This implementation uses busy waiting and will consume 100% CPU on one core, unlike the real asyncio.sleep(). This implementation is purely meant for educational purposes to demonstrate futures and event loop interaction."
  • Add a synchronous time.sleep(0.001) or such right before await YieldToEventLoop() (in both example implementations) and explain (trade-off, sub-optimal workaround, will cause undesired CPU usage but significantly less than without).
Linked PRs
  • gh-143850

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.