Goldman Sachs Marquee model-serving workers need a bounded cache for recently used model results. Implement a thread-safe least recently used (LRU) cache that supports constant-time get and put operations.
Your function receives a positive capacity and a sequence of operations. Each operation is either ["get", key] or ["put", key, value]. Return the results of all get operations in order. A missing key returns -1; put operations produce no output.
The cache must satisfy these rules:
get marks the key as most recently used.get cannot observe a partially completed update or eviction. It is acceptable to process the supplied operations sequentially while using a lock internally.Input: integer capacity and a list of operation lists containing integer keys and values. Output: a list of values from get operations, in order.
def lru_cache(capacity, operations):