summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2017-05-09 02:19:05 +0200
committerGiampaolo Rodola <g.rodola@gmail.com>2017-05-09 02:19:05 +0200
commit42af6fc151d0bff8ad07e10ed7f11f2151744d0c (patch)
tree63a20af31c8845c7f5a9da5852d4512f65608ab1
parent291870b94b753a22d1efb30059a5600b084fcbe6 (diff)
downloadpsutil-42af6fc151d0bff8ad07e10ed7f11f2151744d0c.tar.gz
#802: refactoring
-rw-r--r--psutil/_common.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/psutil/_common.py b/psutil/_common.py
index 8189a9dd..350ffe79 100644
--- a/psutil/_common.py
+++ b/psutil/_common.py
@@ -469,7 +469,7 @@ def deprecated_method(replacement):
return outer
-class WrapNumbers:
+class _WrapNumbers:
def __init__(self):
self.lock = threading.Lock()
@@ -477,14 +477,10 @@ class WrapNumbers:
self.reminders = defaultdict(int)
self.rmap = defaultdict(list)
- def run(self, input_dict, name):
- if name not in self.cache:
- # This was the first call.
- self.cache[name] = input_dict
- return input_dict
-
- # In case the number of keys changed between calls (e.g. a
- # disk disappears) this removes the entry from self.reminders.
+ def _remove_dead_reminders(self, input_dict, name):
+ """In case the number of keys changed between calls (e.g. a
+ disk disappears) this removes the entry from self.reminders.
+ """
old_dict = self.cache[name]
gone_keys = set(old_dict.keys()) - set(input_dict.keys())
for gone_key in gone_keys:
@@ -492,6 +488,14 @@ class WrapNumbers:
del self.reminders[remkey]
del self.rmap[name + "-" + gone_key]
+ def run(self, input_dict, name):
+ if name not in self.cache:
+ # This was the first call.
+ self.cache[name] = input_dict
+ return input_dict
+
+ self._remove_dead_reminders(input_dict, name)
+ old_dict = self.cache[name]
new_dict = {}
for key in input_dict.keys():
input_nt = input_dict[key]
@@ -529,12 +533,12 @@ class WrapNumbers:
self.rmap.pop(name)
-wn = WrapNumbers()
+_wn = _WrapNumbers()
def wrap_numbers(input_dict, name):
- with wn.lock:
- return wn.run(input_dict, name)
+ with _wn.lock:
+ return _wn.run(input_dict, name)
-wrap_numbers.cache_clear = wn.cache_clear
+wrap_numbers.cache_clear = _wn.cache_clear