diff --git a/process_monitor.py b/process_monitor.py new file mode 100644 index 0000000..f08bdde --- /dev/null +++ b/process_monitor.py @@ -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()}") diff --git a/tracker.py b/tracker.py index 25b3f6e..1a8752e 100644 --- a/tracker.py +++ b/tracker.py @@ -6,11 +6,13 @@ System Tracker - Monitor machine health and performance import psutil import time from datetime import datetime +from process_monitor import ProcessMonitor class SystemTracker: def __init__(self): self.start_time = time.time() + self.process_monitor = ProcessMonitor() def get_cpu_usage(self): """Get current CPU usage percentage""" @@ -63,6 +65,8 @@ class SystemTracker: net = self.get_network_stats() print(f"Network: Sent {net['bytes_sent'] / (1024**2):.2f}MB | Recv {net['bytes_recv'] / (1024**2):.2f}MB") + self.process_monitor.display_processes() + if __name__ == "__main__": tracker = SystemTracker()