mirror of
https://github.com/python/cpython
synced 2024-09-05 16:38:56 +00:00
gh-106751: Optimize SelectSelector.select() for many iteration case (gh-106879)
This commit is contained in:
parent
7513e2e7e4
commit
e6f96cf9c6
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Optimize :meth:`SelectSelector.select` for many iteration case. Patch By
|
||||
Dong-hee Na.
|
Loading…
Reference in a new issue