summaryrefslogtreecommitdiff
path: root/Lib/selectors.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2014-01-21 21:00:47 +0100
committerVictor Stinner <victor.stinner@gmail.com>2014-01-21 21:00:47 +0100
commitbf0ba415aee7d3ec2a44cf75bf1f7e3d09ca62b0 (patch)
tree281e71b2fb9ed5c6681b6ce8799538fce547720d /Lib/selectors.py
parent0ae3ca3f5506dc256f706a84935698caa8cc8d05 (diff)
downloadcpython-bf0ba415aee7d3ec2a44cf75bf1f7e3d09ca62b0.tar.gz
Issue #20311: EpollSelector now also rounds the timeout towards zero, as
PollSelector. This change is not really required in Python 3.4, since select.epoll.poll() now rounds also correctly the timeout. But Guido van Rossum prefers to have exactly the same selectors.py file in CPython and Tulip projects: "it's not harmful".
Diffstat (limited to 'Lib/selectors.py')
-rw-r--r--Lib/selectors.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/Lib/selectors.py b/Lib/selectors.py
index f8b56cd433..1bdf972cdf 100644
--- a/Lib/selectors.py
+++ b/Lib/selectors.py
@@ -411,7 +411,14 @@ if hasattr(select, 'epoll'):
return key
def select(self, timeout=None):
- timeout = -1 if timeout is None else max(timeout, 0)
+ if timeout is None:
+ timeout = -1
+ elif timeout <= 0:
+ timeout = 0
+ else:
+ # epoll_wait() has a resolution of 1 millisecond, round away
+ # from zero to wait *at least* timeout seconds.
+ timeout = math.ceil(timeout * 1e3) * 1e-3
max_ev = len(self._fd_to_key)
ready = []
try: