]> granicus.if.org Git - python/commitdiff
Issue #20505: Improve debug info in asyncio event loop
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 11 Feb 2014 09:08:08 +0000 (10:08 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 11 Feb 2014 09:08:08 +0000 (10:08 +0100)
Lib/asyncio/base_events.py

index 377ea216f7cd6ea69acc6501b4fcddcc26e79581..e9cb9349ba13710698e8acad44105ae7b8f91b73 100644 (file)
@@ -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)