From ec941e90cafd9f7c3ba82857ed9435d4b9323e28 Mon Sep 17 00:00:00 2001 From: dmt <> Date: Fri, 18 Oct 2019 23:13:57 +0200 Subject: [PATCH] Log datablock processing. --- cml/domain/data_source.py | 43 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/cml/domain/data_source.py b/cml/domain/data_source.py index 966c944..68cf58a 100644 --- a/cml/domain/data_source.py +++ b/cml/domain/data_source.py @@ -2,6 +2,8 @@ from os.path import commonprefix from itertools import cycle from array import array +from cml.shared.parameter import PROTOCOL_LEVEL + __all__ = ( "DataSource", "Preprocessor", @@ -9,22 +11,62 @@ __all__ = ( ) +def log_learnblock_processing(func): + def wrapper(self): + for learnblock in func(self): + if self.logger and self.logger.level == PROTOCOL_LEVEL: + self.logger.protocol( + "\t".join([ + "", + str(learnblock.length), + str(learnblock.min_timestamp), + str(learnblock.max_timestamp), + str(learnblock.relatives), + ]) + ) + yield learnblock + return wrapper + + +def log_block_processing(func): + counter = 0 + + def wrapper(self): + nonlocal counter + counter += 1 + block = func(self) + if self.logger and self.logger.level == PROTOCOL_LEVEL: + self.logger.protocol( + "\t".join([ + str(counter), + str(block.length), + str(block.min_timestamp), + str(block.max_timestamp) + ]) + ) + return block + return wrapper + + class DataSource: _SIGNED_CHAR = 'b' def __init__(self, source, learnblock_identifier, *, block_size): self.block_size = block_size + self.logger = None self.__source = source self.__learnblock_identifier = learnblock_identifier self.__source_halde_flags = None @property + @log_learnblock_processing def learnblocks(self): for block in self: learnblock = self.__learnblock_identifier.identify(block) self._flip_source_halde_flags(learnblock.indexes) yield learnblock + @log_block_processing def __next__(self): return next(self.__next_helper) @@ -44,7 +86,6 @@ class DataSource: elif old_index > i: halde_runs += 1 old_index = i - counter = 0 yield self.__source.get_block_via_index(block_indexes) block_indexes.clear() -- GitLab