From ba218974c482efb16ed82006a9c18f01daa13aeb Mon Sep 17 00:00:00 2001 From: shortcutme Date: Tue, 31 Dec 2019 12:50:21 +0100 Subject: [PATCH] Task remove optimization --- src/Worker/WorkerTaskManager.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Worker/WorkerTaskManager.py b/src/Worker/WorkerTaskManager.py index 4b3edd87..9359701d 100644 --- a/src/Worker/WorkerTaskManager.py +++ b/src/Worker/WorkerTaskManager.py @@ -98,6 +98,11 @@ class WorkerTaskManager(CustomSortedList): def __contains__(self, value): 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 def append(self, task): @@ -107,10 +112,11 @@ class WorkerTaskManager(CustomSortedList): # Create inner path cache for faster lookup by filename self.inner_paths[task["inner_path"]] = task - def __delitem__(self, index): - # Remove from inner path cache - del self.inner_paths[self.items[index][2]["inner_path"]] - super().__delitem__(index) + def remove(self, task): + if task not in self: + raise ValueError("%r not in list" % task) + else: + super().remove(task) def findTask(self, inner_path): return self.inner_paths.get(inner_path, None)