Task remove optimization
This commit is contained in:
parent
721d4a22f1
commit
ba218974c4
1 changed files with 10 additions and 4 deletions
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue