gh-106751: Optimize SelectSelector.select() for many iteration case (gh-106879)

This commit is contained in:
Dong-hee Na 2023-07-19 15:12:38 +09:00 committed by GitHub
parent 7513e2e7e4
commit e6f96cf9c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 10 deletions

View file

@ -314,17 +314,15 @@ def select(self, timeout=None):
r, w, _ = self._select(self._readers, self._writers, [], timeout)
except InterruptedError:
return ready
r = set(r)
w = set(w)
for fd in r | w:
events = 0
if fd in r:
events |= EVENT_READ
if fd in w:
events |= EVENT_WRITE
key = self._fd_to_key.get(fd)
r = frozenset(r)
w = frozenset(w)
rw = r | w
fd_to_key_get = self._fd_to_key.get
for fd in rw:
key = fd_to_key_get(fd)
if key:
events = ((fd in r and EVENT_READ)
| (fd in w and EVENT_WRITE))
ready.append((key, events & key.events))
return ready

View file

@ -0,0 +1,2 @@
Optimize :meth:`SelectSelector.select` for many iteration case. Patch By
Dong-hee Na.