Skip to content

Commit

Permalink
#802: refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
giampaolo committed May 9, 2017
1 parent 291870b commit 42af6fc
Showing 1 changed file with 17 additions and 13 deletions.
30 changes: 17 additions & 13 deletions psutil/_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -469,29 +469,33 @@ def inner(self, *args, **kwargs):
return outer


class WrapNumbers:
class _WrapNumbers:

def __init__(self):
self.lock = threading.Lock()
self.cache = {}
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:
for remkey in self.rmap[name + "-" + gone_key]:
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]
Expand Down Expand Up @@ -529,12 +533,12 @@ def cache_clear(self, name=None):
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

0 comments on commit 42af6fc

Please sign in to comment.