Я пытаюсь создать декоратор memoize, который работает с несколькими потоками.Потокобезопасный декоратор memoize
Я понял, что мне нужно использовать кеш как общий объект между потоками и приобретать/блокировать общий объект. Я, конечно, запуская темы:
for i in range(5):
thread = threading.Thread(target=self.worker, args=(self.call_queue,))
thread.daemon = True
thread.start()
где работник:
def worker(self, call):
func, args, kwargs = call.get()
self.returns.put(func(*args, **kwargs))
call.task_done()
начинается проблема, конечно же, когда я посылаю функцию украшенную памятки (как this) для многих потоков одновременно.
Как я могу реализовать кеш memo как общий объект среди потоков?