Task remove optimization

This commit is contained in:
shortcutme 2019-12-31 12:50:21 +01:00
parent 721d4a22f1
commit ba218974c4
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -98,6 +98,11 @@ class WorkerTaskManager(CustomSortedList):
def __contains__(self, value): def __contains__(self, value):
return value["inner_path"] in self.inner_paths return value["inner_path"] in self.inner_paths
def __delitem__(self, index):
# Remove from inner path cache
del self.inner_paths[self.items[index][2]["inner_path"]]
super().__delitem__(index)
# Fast task search by inner_path # Fast task search by inner_path
def append(self, task): def append(self, task):
@ -107,10 +112,11 @@ class WorkerTaskManager(CustomSortedList):
# Create inner path cache for faster lookup by filename # Create inner path cache for faster lookup by filename
self.inner_paths[task["inner_path"]] = task self.inner_paths[task["inner_path"]] = task
def __delitem__(self, index): def remove(self, task):
# Remove from inner path cache if task not in self:
del self.inner_paths[self.items[index][2]["inner_path"]] raise ValueError("%r not in list" % task)
super().__delitem__(index) else:
super().remove(task)
def findTask(self, inner_path): def findTask(self, inner_path):
return self.inner_paths.get(inner_path, None) return self.inner_paths.get(inner_path, None)