From 25bac713e7e2f3a49d7aa7022b4e7571b540245e Mon Sep 17 00:00:00 2001 From: m1ngsama Date: Tue, 5 Nov 2024 10:15:00 +0800 Subject: [PATCH] Add process monitoring module --- process_monitor.py | 34 ++++++++++++++++++++++++++++++++++ tracker.py | 4 ++++ 2 files changed, 38 insertions(+) create mode 100644 process_monitor.py 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 8da3cf2..e0c1618 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""" @@ -50,6 +52,8 @@ class SystemTracker: disk = self.get_disk_usage() 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__": tracker = SystemTracker()