Coding style.

This commit is contained in:
Andrew Hamilton 2019-08-25 12:28:53 +10:00
parent 7e5d965868
commit 92982b80a3

View file

@ -28,12 +28,12 @@ class PagedList:
pickle.dump(page, file_, protocol=pickle.HIGHEST_PROTOCOL) pickle.dump(page, file_, protocol=pickle.HIGHEST_PROTOCOL)
self.page_count = index + 1 self.page_count = index + 1
os.rename(tmp_dir, self.pages_dir) os.rename(tmp_dir, self.pages_dir)
self._get_page = functools.lru_cache(maxsize=cache_size)(self._get_page) self._setup_page_cache()
def __len__(self): def __len__(self):
return self._len return self._len
def _get_page(self, index): # This is cached, see __init__. def _get_page(self, index): # This is cached, see setup_page_cache.
pickle_path = os.path.join(self.pages_dir, str(index)) pickle_path = os.path.join(self.pages_dir, str(index))
with gzip.open(pickle_path, "rb") as file_: with gzip.open(pickle_path, "rb") as file_:
return pickle.load(file_) return pickle.load(file_)
@ -62,6 +62,9 @@ class PagedList:
page_index, page_offset = divmod(index, self.page_size) page_index, page_offset = divmod(index, self.page_size)
return self._get_page(page_index)[page_offset] return self._get_page(page_index)[page_offset]
def _setup_page_cache(self):
self._get_page = functools.lru_cache(self.cache_size)(self._get_page)
def __getstate__(self): # Don't pickle the lru_cache. def __getstate__(self): # Don't pickle the lru_cache.
state = self.__dict__.copy() state = self.__dict__.copy()
del state["_get_page"] del state["_get_page"]
@ -69,5 +72,4 @@ class PagedList:
def __setstate__(self, state): def __setstate__(self, state):
self.__dict__ = state self.__dict__ = state
self._get_page = \ self._setup_page_cache()
functools.lru_cache(maxsize=self.cache_size)(self._get_page)