#!/usr/bin/env python3 # -*- coding:utf-8 -*- import copy import sys class G(): def __init__(self): self.data = dict() def get(self, name): return self.data.get(name, 0) def getall(self): return self.data def set(self, name, v): value = copy.deepcopy(v) if name in self.data: if isinstance(self.data[name], dict) and isinstance(value, dict): self.data[name].update(value) else: self.data[name] = value else: self.data.setdefault(name, value) def getsize(self): def get_size(obj, seen=None): size = sys.getsizeof(obj) if seen is None: seen = set() obj_id = id(obj) if obj_id in seen: return 0 seen.add(obj_id) if isinstance(obj, dict): size += sum(get_size(k, seen) + get_size(v, seen) for k, v in obj.items()) elif isinstance(obj, (list, tuple, set, frozenset)): size += sum(get_size(i, seen) for i in obj) return size total_bytes = get_size(self.data) return round(total_bytes / 1024, 2) def clear(self, name=None): if name: self.data.pop(name) else: self.data.clear() def setobj(self, name, obj): if name in self.data: if isinstance(self.data[name], dict) and isinstance(obj, dict): self.data[name].update(obj) else: self.data[name] = obj else: self.data.setdefault(name, obj) _G = G()