TG-PlatformPlus/globals.py

57 lines
1.6 KiB
Python

#!/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()