File size: 2,336 Bytes
6cf18af |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import os
import psutil
import logging
from pathlib import Path
logging.basicConfig(
format='%(asctime)s %(levelname)-8s %(message)s',
level=logging.INFO,
datefmt='%m/%d %H:%M:%S')
logger = logging.getLogger(__name__)
def log_sys_info():
cpu_cores = psutil.cpu_count()
# cpu_freq = '{:.2f}'.format(psutil.cpu_freq().max / 1000) + 'GHz'
cpu_percent = '{:.2f}'.format(psutil.cpu_percent()) + '%'
mem = psutil.virtual_memory()
mem_total = '{:.2f}'.format(mem.total / 1024 / 1024 / 1024) + 'GB'
mem_used = '{:.2f}'.format(mem.used / 1024 / 1024 / 1024) + 'GB'
mem_percent = '{:.2f}'.format(mem.percent) + '%'
disk = psutil.disk_usage('.')
disk_total = '{:.2f}'.format(disk.total / 1024 / 1024 / 1024) + 'GB'
disk_used = '{:.2f}'.format(disk.used / 1024 / 1024 / 1024) + 'GB'
disk_percent = '{:.2f}'.format(disk.percent) + '%'
logger.info('======== SYSTEM INFO =========')
logger.info(f'CPU: {cpu_cores} cores, {cpu_percent} used')
logger.info(f'RAM: {mem_used} / {mem_total}, {mem_percent} used')
logger.info(f'DISK: {disk_used} / {disk_total}, {disk_percent} used')
logger.info('==============================')
class CHAT_DB:
def __init__(self):
self.prompts = {}
self.results = {}
self.index = 1
self.lockfile = '.lock'
def set(self, index, prompt=None, result=None):
assert prompt or result
if prompt:
if index in self.prompts:
raise ValueError('Prompt already exists')
self.prompts[index] = prompt
self.index += 1
if result:
self.results[index] = result
def lock(self):
if not os.path.exists(self.lockfile):
Path(self.lockfile).touch(exist_ok=True)
def unlock(self):
if os.path.exists(self.lockfile):
os.remove(self.lockfile)
def islocked(self):
return os.path.exists(self.lockfile)
def clean(self):
if len(self.prompts) > 100:
self.prompts = dict(list(self.prompts.items())[-100:])
k = list(set(self.prompts.keys()).intersection(set(self.results.keys()))) # keys to preserve
self.prompts = {i: self.prompts[i] for i in k}
self.results = {i: self.results[i] for i in k}
log_sys_info()
db = CHAT_DB()
|