Получить диск использования процесса Windows по имени в Python

Я хотел бы создать сценарий, который ждет, пока конкретный процесс не будет использовать диск 0 МБ/с.

import time
import psutil


def get_process(name):
    process = None
    for p in psutil.process_iter():
        if name in p.as_dict()["name"].lower():
            process = p
    return process


def wait_process(name):
    process = get_process(name)
    if process:
        while process.disk_usage() > 0:
            time.sleep(5)


wait_process("firefox")

Я попробовал модуль psutil, но кажется, что мы не можем получить использование диска процессом.

ИЗМЕНИТЬ

Я пробовал это, но я получаю нерелевантный номер.

def process_disk_usage(process_name: str) -> float:
    # process = None
    for p in psutil.process_iter():
        if process_name.lower() in p.as_dict()["name"].lower():
            r_bytes = p.io_counters()[2]
            w_bytes = p.io_counters()[3]
            t_bytes = r_bytes + w_bytes
            return t_bytes / (1024.0 * 1024.0)
    return None


def wait_process(process_name: str) -> None:
    while process_disk_usage(process_name) > 0:
        time.sleep(5)

person 0lan    schedule 07.09.2020    source источник


Ответы (1)


 p = psutil.Process()
 io_counters = p.io_counters() 
 disk_usage_process = io_counters[2] + io_counters[3] # read_bytes + write_bytes
 disk_io_counter = psutil.disk_io_counters()
 disk_total = disk_io_counter[2] + disk_io_counter[3] # read_bytes + write_bytes
 print("Disk", disk_usage_process/disk_total * 100)

Ответил здесь: Как получить текущий дисковый ввод-вывод и сетевой ввод-вывод в процентах с использованием Python?

person 0x77dev    schedule 07.09.2020
comment
Я не могу получить тот же результат, что и в диспетчере задач Windows. Я хотел бы получить использование диска процесса в МБ/с. - person 0lan; 07.09.2020
comment
@ 0lan Может быть, вы можете просто использовать powershell? (Вызов скрипта powershell из python) - person 0x77dev; 07.09.2020