#!/usr/bin/env python3
"""Auto-generated by AGI Loop cycle #1051
Task: Write a Python function that reads /proc/meminfo, and if available RAM is below 10GB, identifies the top 3 memory-consuming processes
Generated: 2026-02-12T18:20:59.385878
"""

import re

def get_available_ram():
    with open('/proc/meminfo', 'r') as file:
        meminfo = file.read()
    match = re.search(r'MemAvailable:\s+(\d+)\s+kB', meminfo)
    if match:
        available_ram_kb = int(match.group(1))
        available_ram_gb = available_ram_kb / (1024 * 1024)
        return available_ram_gb
    return None

def get_top_memory_processes():
    processes = []
    with open('/proc/stat', 'r') as file:
        stat_data = file.read()
    for line in stat_data.splitlines():
        if line.startswith('procs'):
            continue
        parts = line.split()
        if len(parts) >= 3:
            try:
                pid = int(parts[1])
                mem = int(parts[2])
                processes.append((pid, mem))
            except ValueError:
                continue
    processes.sort(key=lambda x: x[1], reverse=True)
    return processes[:3]

def main():
    available_ram_gb = get_available_ram()
    if available_ram_gb is not None and available_ram_gb < 10:
        print(f"Available RAM is below 10GB ({available_ram_gb:.2f} GB). Top 3 memory-consuming processes:")
        top_processes = get_top_memory_processes()
        for pid, mem in top_processes:
            print(f"PID: {pid}, Memory: {mem} KB")
    else:
        print("Available RAM is 10GB or more.")

if __name__ == '__main__':
    main()