diff options
Diffstat (limited to 'replacement_poll_selector.py')
| -rw-r--r-- | replacement_poll_selector.py | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/replacement_poll_selector.py b/replacement_poll_selector.py deleted file mode 100644 index 0813a66..0000000 --- a/replacement_poll_selector.py +++ /dev/null @@ -1,41 +0,0 @@ -import selectors -import sys -import threading -import time -from typing import List, Optional, Tuple - -from mini_scalene import MiniScalene - - -@MiniScalene.shim -def replacement_poll_selector(mini_scalene: MiniScalene) -> None: - """ - A replacement for selectors.PollSelector that - periodically wakes up to accept signals - """ - - class ReplacementPollSelector(selectors.PollSelector): - def select( - self, timeout: Optional[float] = -1 - ) -> List[Tuple[selectors.SelectorKey, int]]: - tident = threading.get_ident() - start_time = time.perf_counter() - if not timeout or timeout < 0: - interval = sys.getswitchinterval() - else: - interval = min(timeout, sys.getswitchinterval()) - while True: - scalene.set_thread_sleeping(tident) - selected = super().select(interval) - scalene.reset_thread_sleeping(tident) - if selected or timeout == 0: - return selected - end_time = time.perf_counter() - if timeout and timeout != -1: - if end_time - start_time >= timeout: - return [] # None - - ReplacementPollSelector.__qualname__ = ( - "replacement_poll_selector.ReplacementPollSelector" - ) - selectors.PollSelector = ReplacementPollSelector # type: ignore |
