viewing paste Unknown #58217 | Text

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
import psutil
 
def find_closest_process(target_pid, tolerance):
    closest_process = None
    closest_pid = None
    closest_memory = None
 
    # Определяем диапазон PID
    min_pid = target_pid - tolerance
    max_pid = target_pid + tolerance
 
    for proc in psutil.process_iter(['pid', 'name', 'memory_info']):
        try:
            pid = proc.info['pid']
            if min_pid <= pid <= max_pid:
                # Если найден процесс, проверим, является ли он самым близким
                if closest_pid is None or abs(pid - target_pid) < abs(closest_pid - target_pid):
                    closest_pid = pid
                    closest_process = proc
                    closest_memory = proc.info['memory_info'].rss  # Используем RSS (Resident Set Size)
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            continue
 
    return closest_process, closest_memory
 
def calculate_page_size(memory_in_bytes):
    # Ищем подходящую степень двойки в диапазоне от 10 до 20
    for power in range(10, 21):
        page_size = 2 ** power
        if memory_in_bytes / page_size > 0:  # Объем страниц должен быть положительным
            return memory_in_bytes // page_size 
    return None
 
# Задаем PIDs и толерантность
pids = [10252, 5052]
tolerance = 100
 
for pid in pids:
    process, memory = find_closest_process(pid, tolerance)
    if process:
        pages = calculate_page_size(memory)
        print(f"Имя процесса: {process.info['name']}, PID: {process.info['pid']}, Кол-во занимаемой памяти: {memory} в байтах, Кол-во страниц: {pages}")
    else:
        print(f"Процессы с похожими PID не найдены: {pid} с учётом погрешности  {tolerance}.")
Viewed 526 times, submitted by Guest.