[Python-checkins] cpython: Issue #20311: Revert e042ea77a152 and 7ce7295393c2, PollSelector.select() and
victor.stinner
python-checkins at python.org
Sat Jan 25 14:44:31 CET 2014
http://hg.python.org/cpython/rev/90354a4c9dde
changeset: 88694:90354a4c9dde
user: Victor Stinner <victor.stinner at gmail.com>
date: Sat Jan 25 14:43:45 2014 +0100
summary:
Issue #20311: Revert e042ea77a152 and 7ce7295393c2, PollSelector.select() and
EpollSelector.select() round again the timeout towards zero
files:
Lib/selectors.py | 10 ++--------
Lib/test/test_selectors.py | 19 -------------------
Misc/NEWS | 5 -----
3 files changed, 2 insertions(+), 32 deletions(-)
diff --git a/Lib/selectors.py b/Lib/selectors.py
--- a/Lib/selectors.py
+++ b/Lib/selectors.py
@@ -8,7 +8,6 @@
from abc import ABCMeta, abstractmethod
from collections import namedtuple, Mapping
import functools
-import math
import select
import sys
@@ -357,9 +356,8 @@
elif timeout <= 0:
timeout = 0
else:
- # poll() has a resolution of 1 millisecond, round away from
- # zero to wait *at least* timeout seconds.
- timeout = int(math.ceil(timeout * 1e3))
+ # Round towards zero
+ timeout = int(timeout * 1000)
ready = []
try:
fd_event_list = self._poll.poll(timeout)
@@ -415,10 +413,6 @@
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:
diff --git a/Lib/test/test_selectors.py b/Lib/test/test_selectors.py
--- a/Lib/test/test_selectors.py
+++ b/Lib/test/test_selectors.py
@@ -363,25 +363,6 @@
self.assertFalse(s.select(2))
self.assertLess(time() - t, 2.5)
- def test_timeout_rounding(self):
- # Issue #20311: Timeout must be rounded away from zero to wait *at
- # least* timeout seconds. For example, epoll_wait() has a resolution of
- # 1 ms (10^-3), epoll.select(0.0001) must wait 1 ms, not 0 ms.
- s = self.SELECTOR()
- self.addCleanup(s.close)
-
- rd, wr = self.make_socketpair()
- s.register(rd, selectors.EVENT_READ)
-
- for timeout in (1e-2, 1e-3, 1e-4):
- t0 = perf_counter()
- s.select(timeout)
- dt = perf_counter() - t0
- clock = get_clock_info('perf_counter')
- self.assertGreaterEqual(dt, timeout,
- "%.30f < %.30f ; clock=%s"
- % (dt, timeout, clock))
-
class ScalableSelectorMixIn:
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -40,11 +40,6 @@
which it could get an inspect.Signature is a callable written in Python.
Fix courtesy of Michael Foord.
-- Issue #20311: selector.PollSelector.select() now rounds the timeout away from
- zero, instead of rounding towards zero. For example, a timeout of one
- microsecond is now rounded to one millisecond, instead of being rounded to
- zero.
-
- Issue #20317: ExitStack.__exit__ could create a self-referential loop if an
exception raised by a cleanup operation already had its context set
correctly (for example, by the @contextmanager decorator). The infinite
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list