You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
966 B
Python

# Copyright (C) 2019-2020 Intel Corporation
#
# SPDX-License-Identifier: MIT
from collections import OrderedDict
_instance = None
DEFAULT_CAPACITY = 2
class ImageCache:
@staticmethod
def get_instance():
global _instance
if _instance is None:
_instance = ImageCache()
return _instance
def __init__(self, capacity=DEFAULT_CAPACITY):
self.capacity = int(capacity)
self.items = OrderedDict()
def push(self, item_id, image):
if self.capacity <= len(self.items):
self.items.popitem(last=True)
self.items[item_id] = image
def get(self, item_id):
default = object()
item = self.items.get(item_id, default)
if item is default:
return None
self.items.move_to_end(item_id, last=False) # naive splay tree
return item
def size(self):
return len(self.items)
def clear(self):
self.items.clear()