在Python中按名称获取Windows进程的使用磁盘

问题描述

我想创建一个脚本,以等待特定进程的磁盘使用率为0 MB / s。

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)

解决方法

 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)

在这里回答:How to get current disk IO and network IO into percentage using Python?

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...