Add process monitoring module

This commit is contained in:
m1ngsama 2024-11-05 10:15:00 +08:00
parent b25998e57b
commit 25bac713e7
2 changed files with 38 additions and 0 deletions

34
process_monitor.py Normal file
View file

@ -0,0 +1,34 @@
"""
Process monitoring utilities
"""
import psutil
class ProcessMonitor:
def get_top_processes(self, limit=5):
"""Get top processes by CPU usage"""
processes = []
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']):
try:
processes.append(proc.info)
except (psutil.NoSuchProcess, psutil.AccessDenied):
pass
processes.sort(key=lambda x: x['cpu_percent'] or 0, reverse=True)
return processes[:limit]
def get_process_count(self):
"""Get total number of running processes"""
return len(psutil.pids())
def display_processes(self):
"""Display top processes"""
print(f"\nTop Processes by CPU Usage:")
print(f"{'PID':<10}{'Name':<30}{'CPU%':<10}{'Memory%':<10}")
print("-" * 60)
for proc in self.get_top_processes():
print(f"{proc['pid']:<10}{proc['name']:<30}{proc['cpu_percent']:<10.2f}{proc['memory_percent']:<10.2f}")
print(f"\nTotal Processes: {self.get_process_count()}")

View file

@ -6,11 +6,13 @@ System Tracker - Monitor machine health and performance
import psutil import psutil
import time import time
from datetime import datetime from datetime import datetime
from process_monitor import ProcessMonitor
class SystemTracker: class SystemTracker:
def __init__(self): def __init__(self):
self.start_time = time.time() self.start_time = time.time()
self.process_monitor = ProcessMonitor()
def get_cpu_usage(self): def get_cpu_usage(self):
"""Get current CPU usage percentage""" """Get current CPU usage percentage"""
@ -50,6 +52,8 @@ class SystemTracker:
disk = self.get_disk_usage() disk = self.get_disk_usage()
print(f"Disk: {disk['percent']}% ({disk['used'] / (1024**3):.2f}GB / {disk['total'] / (1024**3):.2f}GB)") print(f"Disk: {disk['percent']}% ({disk['used'] / (1024**3):.2f}GB / {disk['total'] / (1024**3):.2f}GB)")
self.process_monitor.display_processes()
if __name__ == "__main__": if __name__ == "__main__":
tracker = SystemTracker() tracker = SystemTracker()