import logging import selectors import sys from functools import cache from .distributed import global_leader_only _logger = logging.getLogger(__name__) @cache def _get_stdin_selector(): selector = selectors.DefaultSelector() selector.register(fileobj=sys.stdin, events=selectors.EVENT_READ) return selector @global_leader_only(boardcast_return=True) def non_blocking_input(): s = "" selector = _get_stdin_selector() events = selector.select(timeout=0) for key, _ in events: s: str = key.fileobj.readline().strip() _logger.info(f'Get stdin "{s}".') return s