changeset: 88614:7ce7295393c2 user: Victor Stinner date: Tue Jan 21 21:00:47 2014 +0100 files: Lib/selectors.py description: 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". diff -r 29b4eb47f65e -r 7ce7295393c2 Lib/selectors.py --- a/Lib/selectors.py Tue Jan 21 20:52:17 2014 +0100 +++ b/Lib/selectors.py Tue Jan 21 21:00:47 2014 +0100 @@ -411,7 +411,14 @@ 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: