File size: 612 Bytes
32b2aaa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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