From: Victor Stinner Date: Tue, 11 Feb 2014 09:08:08 +0000 (+0100) Subject: Issue #20505: Improve debug info in asyncio event loop X-Git-Tag: v3.4.1rc1~233^2~359 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7bff8e1e2b1e395be327662c3c3dccd4e5af1058;p=python Issue #20505: Improve debug info in asyncio event loop --- diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 377ea216f7..e9cb9349ba 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -634,12 +634,25 @@ class BaseEventLoop(events.AbstractEventLoop): else: logger.log(level, 'poll took %.3f seconds', t1-t0) else: - t0 = self.time() + t0_monotonic = time.monotonic() + t0 = time.perf_counter() event_list = self._selector.select(timeout) - dt = self.time() - t0 - if not event_list and timeout and dt < timeout: - print("asyncio: selector.select(%.3f ms) took %.3f ms" - % (timeout*1e3, dt*1e3), + dt = time.perf_counter() - t0 + dt_monotonic = time.monotonic() - t0_monotonic + if not event_list and timeout: # and dt < timeout: + selector = self._selector.__class__.__name__ + if (selector.startswith(("Poll", "Epoll", "Iocp")) + or timeout > 1e-3 or dt > 1e-3): + unit, factor = "ms", 1e3 + else: + unit, factor = "us", 1e6 + print("asyncio: %s.select(%.3f %s) took %.3f %s" + " (monotonic: %.3f %s, clock res: %.3f %s)" + % (self._selector.__class__.__name__, + timeout * factor, unit, + dt * factor, unit, + dt_monotonic * factor, unit, + self._clock_resolution * factor, unit), file=sys.__stderr__, flush=True) self._process_events(event_list)