diff --git a/pytools/__init__.py b/pytools/__init__.py index 89e56b132466ec83ea8c5779c481050601b1cd54..688c9cd9e668be13904d8524b4ed209526ec34e5 100644 --- a/pytools/__init__.py +++ b/pytools/__init__.py @@ -142,11 +142,6 @@ Helpers for :mod:`numpy` Timing data ----------- -.. data:: SUPPORTS_PROCESS_TIME - - A :class:`bool` indicating whether :class:`ProcessTimer` measures elapsed - process time (available on Python 3.3+). - .. autoclass:: ProcessTimer Log utilities @@ -2342,7 +2337,7 @@ def reshaped_view(a, newshape): # {{{ process timer -SUPPORTS_PROCESS_TIME = (sys.version_info >= (3, 3)) +SUPPORTS_PROCESS_TIME = True class ProcessTimer: @@ -2357,20 +2352,16 @@ class ProcessTimer: .. attribute:: wall_elapsed .. attribute:: process_elapsed - Only available in Python 3.3+. - .. versionadded:: 2018.5 """ def __init__(self): import time - if SUPPORTS_PROCESS_TIME: - self.perf_counter_start = time.perf_counter() - self.process_time_start = time.process_time() + self.perf_counter_start = time.perf_counter() + self.process_time_start = time.process_time() - else: - import timeit - self.time_start = timeit.default_timer() + self.wall_elapsed = None + self.process_elapsed = None def __enter__(self): return self @@ -2379,34 +2370,20 @@ class ProcessTimer: self.done() def done(self): - # pylint: disable=attribute-defined-outside-init - import time - if SUPPORTS_PROCESS_TIME: - self.wall_elapsed = time.perf_counter() - self.perf_counter_start - self.process_elapsed = time.process_time() - self.process_time_start - - else: - import timeit - self.wall_elapsed = timeit.default_timer() - self.time_start - self.process_elapsed = None + self.wall_elapsed = time.perf_counter() - self.perf_counter_start + self.process_elapsed = time.process_time() - self.process_time_start def __str__(self): - if self.process_elapsed is not None: - cpu = self.process_elapsed / self.wall_elapsed - return f"{self.wall_elapsed:.2f}s wall {cpu:.2f}x CPU" - else: - return f"{self.wall_elapsed:.2f}s wall" + cpu = self.process_elapsed / self.wall_elapsed + return f"{self.wall_elapsed:.2f}s wall {cpu:.2f}x CPU" def __repr__(self): wall = self.wall_elapsed process = self.process_elapsed - if self.process_elapsed is not None: - return (f"{type(self).__name__}" - f"") - else: - return f"{type(self).__name__}" + return (f"{type(self).__name__}" + f"(wall_elapsed={wall!r}s, process_elapsed={process!r}s)") # }}}