summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2017-05-09 02:11:56 +0200
committerGiampaolo Rodola <g.rodola@gmail.com>2017-05-09 02:11:56 +0200
commit291870b94b753a22d1efb30059a5600b084fcbe6 (patch)
tree97ec3b3923f7d72a4c10ae4ed479bb9f236317a6
parent98af48a1c675e28c18f3dd05e11db6cb1d44dbaf (diff)
downloadpsutil-291870b94b753a22d1efb30059a5600b084fcbe6.tar.gz
#802: move everything into a class
-rw-r--r--psutil/_common.py63
1 files changed, 33 insertions, 30 deletions
diff --git a/psutil/_common.py b/psutil/_common.py
index dc44f3a8..8189a9dd 100644
--- a/psutil/_common.py
+++ b/psutil/_common.py
@@ -469,27 +469,28 @@ def deprecated_method(replacement):
return outer
-_wrapn_lock = threading.Lock()
-_wrapn_cache = {}
-_wrapn_reminders = defaultdict(int)
-_wrapn_rmap = defaultdict(list)
+class WrapNumbers:
+ def __init__(self):
+ self.lock = threading.Lock()
+ self.cache = {}
+ self.reminders = defaultdict(int)
+ self.rmap = defaultdict(list)
-def wrap_numbers(input_dict, name):
- with _wrapn_lock:
- if name not in _wrapn_cache:
+ def run(self, input_dict, name):
+ if name not in self.cache:
# This was the first call.
- _wrapn_cache[name] = input_dict
+ 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 _wrapn_reminders.
- old_dict = _wrapn_cache[name]
+ # 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:
- for remkey in _wrapn_rmap[name + "-" + gone_key]:
- del _wrapn_reminders[remkey]
- del _wrapn_rmap[name + "-" + gone_key]
+ for remkey in self.rmap[name + "-" + gone_key]:
+ del self.reminders[remkey]
+ del self.rmap[name + "-" + gone_key]
new_dict = {}
for key in input_dict.keys():
@@ -508,30 +509,32 @@ def wrap_numbers(input_dict, name):
old_value = old_nt[i]
remkey = (name, key, i)
if input_value < old_value:
- _wrapn_reminders[remkey] += old_value
- bits.append(input_value + _wrapn_reminders[remkey])
- _wrapn_rmap[name + "-" + key].append(remkey)
+ self.reminders[remkey] += old_value
+ bits.append(input_value + self.reminders[remkey])
+ self.rmap[name + "-" + key].append(remkey)
new_dict[key] = input_nt._make(bits)
- _wrapn_cache[name] = input_dict
+ self.cache[name] = input_dict
return new_dict
+ def cache_clear(self, name=None):
+ with self.lock:
+ if name is None:
+ self.cache.clear()
+ self.reminders.clear()
+ self.rmap.clear()
+ else:
+ self.cache.pop(name)
+ self.rmap.pop(name)
-def _wrapn_cache_clear(name=None):
- with _wrapn_lock:
- if name is None:
- _wrapn_cache.clear()
- _wrapn_reminders.clear()
- _wrapn_rmap.clear()
- else:
- _wrapn_cache.pop(name)
- _wrapn_rmap.pop(name)
+wn = WrapNumbers()
-def _wrapn_cache_info(name=None):
- return (_wrapn_cache, _wrapn_reminders, _wrapn_rmap)
+
+def wrap_numbers(input_dict, name):
+ with wn.lock:
+ return wn.run(input_dict, name)
-wrap_numbers.cache_clear = _wrapn_cache_clear
-wrap_numbers.cache_info = _wrapn_cache_info
+wrap_numbers.cache_clear = wn.cache_clear