From 8dcd925400b83343415d5dc973634f71b4c7a5d9 Mon Sep 17 00:00:00 2001 From: "roberto.borghes" <roberto.borghes@elettra.eu> Date: Thu, 23 Dec 2021 13:00:35 +0100 Subject: [PATCH] Bug fix: corrected the internal data buffer size calculation --- src/DataBuffer.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/DataBuffer.py b/src/DataBuffer.py index 21b5331..4aafe89 100644 --- a/src/DataBuffer.py +++ b/src/DataBuffer.py @@ -112,14 +112,18 @@ class donkiBuffer(threading.Thread): self.trg_range[data_name] = [1,1] idx = 0 for dd in data_in: - if sys.getsizeof(self.dbuffers[data_name]) > self.max_size: + if hasattr(dd, "nbytes"): + # numpy ndarray case + buffersize = len(self.dbuffers[data_name]) * dd.nbytes + else: + buffersize = len(self.dbuffers[data_name]) * sys.getsizeof(dd) + if buffersize > self.max_size: try: if (self.trg_range[data_name][0]) in (self.dbuffers[data_name]).keys(): - del self.dbuffers[data_name][self.trg_range[data_name][0]] + del self.dbuffers[data_name][self.trg_range[data_name][0]] self.trg_range[data_name][0] = self.trg_range[data_name][0] + 1 except: traceback.print_exc() - self.dbuffers[data_name][trg_in+idx] = dd self._last_trigger = max(self._last_trigger,trg_f) self.lock.release() -- GitLab