diff --git a/Lib/selectors.py b/Lib/selectors.py index 63392f5eb93..f8b56cd4331 100644 --- a/Lib/selectors.py +++ b/Lib/selectors.py @@ -354,10 +354,12 @@ def unregister(self, fileobj): def select(self, timeout=None): if timeout is None: timeout = None - elif timeout < 0: + elif timeout <= 0: timeout = 0 else: - timeout = int(math.ceil(timeout * 1000.0)) + # poll() has a resolution of 1 millisecond, round away from + # zero to wait *at least* timeout seconds. + timeout = int(math.ceil(timeout * 1e3)) ready = [] try: fd_event_list = self._poll.poll(timeout)