複数のスレッドで動作するメモ化デコレータを作成しようとしています。
スレッド間の共有オブジェクトとしてキャッシュを使用し、共有オブジェクトを取得/ロックする必要があることを理解しました。もちろん、スレッドを起動しています。
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()
もちろん、メモ関数で装飾された関数(このような)を同時に多くのスレッドに送信すると、問題が発生します。
メモのキャッシュをスレッド間の共有オブジェクトとして実装するにはどうすればよいですか?