From 87d93afb447175114442f4cb232db3216a180f54 Mon Sep 17 00:00:00 2001 From: Stefan Holst Date: Wed, 31 Mar 2021 11:11:25 +0900 Subject: [PATCH] fix time in unpickled log objects --- src/kyupy/__init__.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/kyupy/__init__.py b/src/kyupy/__init__.py index 8bbfc9f..07b15e0 100644 --- a/src/kyupy/__init__.py +++ b/src/kyupy/__init__.py @@ -78,6 +78,7 @@ class Log: """A very simple logger that formats the messages with the number of seconds since program start. """ + def __init__(self): self.start = time.perf_counter() self.logfile = None @@ -85,6 +86,13 @@ class Log: After each write, ``flush()`` is called as well. """ + def __getstate__(self): + return {'elapsed': time.perf_counter() - self.start} + + def __setstate__(self, state): + self.logfile = None + self.start = time.perf_counter() - state['elapsed'] + def log(self, level, message): t = time.perf_counter() - self.start if self.logfile is None: @@ -120,7 +128,8 @@ class Log: elapsed_time = current_time - start_time total_time = elapsed_time / done rem_time = total_time - elapsed_time - self.log(':', f'{done*100:.0f}% done {hr_time(elapsed_time)} elapsed {hr_time(rem_time)} remaining') + self.log( + ':', f'{done*100:.0f}% done {hr_time(elapsed_time)} elapsed {hr_time(rem_time)} remaining') log_interval = min(600, int(log_interval*1.5)) lastlog_time = current_time @@ -167,8 +176,10 @@ class MockCuda: for grid_y in range(grid_dim[1]): for block_x in range(block_dim[0]): for block_y in range(block_dim[1]): - outer.x = grid_x * block_dim[0] + block_x - outer.y = grid_y * block_dim[1] + block_y + outer.x = grid_x * \ + block_dim[0] + block_x + outer.y = grid_y * \ + block_dim[1] + block_y self.func(*args, **kwargs) return inner return Launcher(func)