我正在尝试制作一个可与多个线程一起使用的 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()
当然,当我同时向多个线程发送一个装饰有 memo 函数(如this )的函数时,问题就开始了。
如何将备忘录的缓存实现为线程之间的共享对象?