You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
asyncio.base_events.BaseEventLoop._add_callback references TimerHandle but never uses them #101143
After 592ada9 it appears this function not longer cares about self._scheduled or TimerHandle but the docstring seems to imply otherwise
Your environment
CPython versions tested on: 3.12.0a4
Operating system and architecture: MacOS
I only noticed because it was unexpectedly more expensive
I think its dead code and can be simplified to:
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index cbabb43ae0..070ea1044d 100644
--- a/Lib/asyncio/base_events.py+++ b/Lib/asyncio/base_events.py@@ -1857,11 +1857,9 @@ def call_exception_handler(self, context):
exc_info=True)
def _add_callback(self, handle):
- """Add a Handle to _scheduled (TimerHandle) or _ready."""+ """Add a Handle to _ready."""
assert isinstance(handle, events.Handle), 'A Handle is required here'
- if handle._cancelled:- return- assert not isinstance(handle, events.TimerHandle)+ if not handle._cancelled:
self._ready.append(handle)
def _add_callback_signalsafe(self, handle):
Pushed that suggested change to a few more production machines to be sure. Still kinda surprising how much run time it has but I guess thats what happens when you call it ~10000 time a minute.
Activity
gvanrossum commentedon Jan 19, 2023
You might as well submit a PR, we can review then.
bdraco commentedon Jan 20, 2023
Pushed that suggested change to a few more production machines to be sure. Still kinda surprising how much run time it has but I guess thats what happens when you call it ~10000 time a minute.
Will send a PR soon
bdraco commentedon Jan 20, 2023
Updated callgrind after #101197 (comment) which brings it down to the 21st most run time from 6th on my test Home Assistant instance.
gh-101143: Remove references to `TimerHandle` from `asyncio.base_even…
pythongh-101143: Remove references to `TimerHandle` from `asyncio.bas…
pythongh-101143: Remove references to `TimerHandle` from `asyncio.bas…
gh-101143: Remove references to `TimerHandle` from `asyncio.base_even…
gh-101143: Remove references to `TimerHandle` from `asyncio.base_even…