From 1de2bf81cdb3b16662c54daafe5bad718a5cdb0b Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 19 Dec 2019 09:15:07 -0500 Subject: [PATCH] multithreading fix --- hexlib/misc.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hexlib/misc.py b/hexlib/misc.py index dca263f..554b696 100644 --- a/hexlib/misc.py +++ b/hexlib/misc.py @@ -2,6 +2,7 @@ import time import atexit import siphash +from threading import Lock last_time_called = dict() @@ -30,17 +31,18 @@ def buffered(batch_size: int, flush_on_exit: bool = False): def decorate(func): buffer = [] + lock = Lock() if flush_on_exit: atexit.register(func, buffer) def wrapper(items): + with lock: + for item in items: + buffer.append(item) - for item in items: - buffer.append(item) - - if len(buffer) >= batch_size: - func(buffer) - buffer.clear() + if len(buffer) >= batch_size: + func(buffer) + buffer.clear() return wrapper