python / python/cpython

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

オープン
#143,727 コメント 6 件 リアクション 0 件 担当者 1 名 GitHub で見る

@willingc がすでに取り組んでいます。

2026年7月23日 から。

  • #143850 @anordin95 による — オープン
docs topic-asyncio
主要言語
Python
スター
77.2k
フォーク
35.9k
PR マージ指標
PR 指標を取得中

説明

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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。