diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-01-25 14:56:48 +0100 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-01-25 14:56:48 +0100 |
commit | 1f316d3476ef9b323fa5aff782080625aecbb8cd (patch) | |
tree | facdbf3b70a5485b6ed342ab6d04af8a61acd075 /Lib/selectors.py | |
parent | cf145c133e02ce3d8dd4dbe58c55c4c48b8d616d (diff) | |
download | cpython-1f316d3476ef9b323fa5aff782080625aecbb8cd.tar.gz |
Issue #20311: selectors: Add a resolution attribute to BaseSelector.
Diffstat (limited to 'Lib/selectors.py')
-rw-r--r-- | Lib/selectors.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/Lib/selectors.py b/Lib/selectors.py index cd8b29e4cc..b1b530afcb 100644 --- a/Lib/selectors.py +++ b/Lib/selectors.py @@ -5,7 +5,7 @@ This module allows high-level and efficient I/O multiplexing, built upon the """ -from abc import ABCMeta, abstractmethod +from abc import ABCMeta, abstractmethod, abstractproperty from collections import namedtuple, Mapping import functools import select @@ -82,6 +82,11 @@ class BaseSelector(metaclass=ABCMeta): performant implementation on the current platform. """ + @abstractproperty + def resolution(self): + """Resolution of the selector in seconds""" + return None + @abstractmethod def register(self, fileobj, events, data=None): """Register a file object. @@ -283,6 +288,10 @@ class SelectSelector(_BaseSelectorImpl): self._readers = set() self._writers = set() + @property + def resolution(self): + return 1e-6 + def register(self, fileobj, events, data=None): key = super().register(fileobj, events, data) if events & EVENT_READ: @@ -335,6 +344,10 @@ if hasattr(select, 'poll'): super().__init__() self._poll = select.poll() + @property + def resolution(self): + return 1e-3 + def register(self, fileobj, events, data=None): key = super().register(fileobj, events, data) poll_events = 0 @@ -385,6 +398,10 @@ if hasattr(select, 'epoll'): super().__init__() self._epoll = select.epoll() + @property + def resolution(self): + return 1e-3 + def fileno(self): return self._epoll.fileno() @@ -445,6 +462,10 @@ if hasattr(select, 'kqueue'): super().__init__() self._kqueue = select.kqueue() + @property + def resolution(self): + return 1e-9 + def fileno(self): return self._kqueue.fileno() |