import threading import time import psutil import logging from collections import deque import os logger = logging.getLogger("monitor") # تخزين آخر 60 قياس (60 ثانية) cpu_history = deque(maxlen=60) mem_history = deque(maxlen=60) current_metrics = {'cpu': 0, 'memory': 0} def monitor_resources(): """تراقب استخدام وحدة المعالجة المركزية والذاكرة كل ثانية""" while True: try: cpu_percent = psutil.cpu_percent(interval=None) mem_percent = psutil.virtual_memory().percent current_metrics['cpu'] = cpu_percent current_metrics['memory'] = mem_percent cpu_history.append(cpu_percent) mem_history.append(mem_percent) except Exception as e: logger.error(f"خطأ في مراقبة الموارد: {str(e)}") time.sleep(1) def get_current_metrics(): """ترجع القيم الحالية للموارد""" return { 'cpu': current_metrics['cpu'], 'memory': current_metrics['memory'], 'cpu_history': list(cpu_history), 'mem_history': list(mem_history) } def start_monitoring_thread(): """تشغيل خيط المراقبة الخلفي""" thread = threading.Thread(target=monitor_resources, daemon=True) thread.start() logger.info("✅ تم بدء مراقبة الموارد في خيط منفصل")