MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / select

Method select

tools/python-3.11.9-amd64/Lib/selectors.py:451–481  ·  view source on GitHub ↗
(self, timeout=None)

Source from the content-addressed store, hash-verified

449 return self._selector.fileno()
450
451 def select(self, timeout=None):
452 if timeout is None:
453 timeout = -1
454 elif timeout <= 0:
455 timeout = 0
456 else:
457 # epoll_wait() has a resolution of 1 millisecond, round away
458 # from zero to wait *at least* timeout seconds.
459 timeout = math.ceil(timeout * 1e3) * 1e-3
460
461 # epoll_wait() expects `maxevents` to be greater than zero;
462 # we want to make sure that `select()` can be called when no
463 # FD is registered.
464 max_ev = max(len(self._fd_to_key), 1)
465
466 ready = []
467 try:
468 fd_event_list = self._selector.poll(timeout, max_ev)
469 except InterruptedError:
470 return ready
471 for fd, event in fd_event_list:
472 events = 0
473 if event & ~select.EPOLLIN:
474 events |= EVENT_WRITE
475 if event & ~select.EPOLLOUT:
476 events |= EVENT_READ
477
478 key = self._key_from_fd(fd)
479 if key:
480 ready.append((key, events & key.events))
481 return ready
482
483 def close(self):
484 self._selector.close()

Callers

nothing calls this directly

Calls 4

maxFunction · 0.85
_key_from_fdMethod · 0.80
pollMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected