Issues in asyncio documentation section "A homemade asyncio.sleep"
未關閉
docs
topic-asyncio
- 主要語言
- Python
- 星號
- 77.2k
- 分支
- 36k
- 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:
- 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 usingtime.sleep(seconds)would also behave sane here. Therefore, I think it should be changed toawait async_sleep(3). - 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 beforeawait 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
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
評估
這個 Issue 還沒有評估資料。