我想编写一个 Python 代码以百分比形式读取磁盘 IO 和网络 IO,就像我们在 Windows 任务管理器中看到的那样。目前我正在使用psutil.disk_io_counters()
和psutil.net_io_counters()
。通过这个,我得到了磁盘 IO 的字节读取和字节写入,以及网络 IO接收的字节和发送的字节。但我不知道如何将它们转换为百分比。还观察到disk_io_counters()
并net_io_counters()
没有给出实例值。我已经尝试过此链接中提供的建议。但我没有得到想要的价值。我的操作系统是 Windows,但我希望脚本以独立于平台的方式使用。因此,无需安装任何工具,例如iotop
或iostat
,是否可以获得我需要的值?我尝试了以下代码:
import psutil, os
print('Disk: ',psutil.disk_io_counters())
print('Network: ',psutil.net_io_counters())
我还尝试了以下代码来检查是否使用psutil.io_counters()
提供即时磁盘 IO。代码是:
import psutil
import time
for x in range(10):
for proc in psutil.process_iter():
io_counters = proc.io_counters()
disk_usage_process = io_counters[2] + io_counters[3] # read_bytes + write_bytes
print("PID: ", proc.pid, "Disk", disk_usage_process)
print('************************************************************')
time.sleep(1)
但我观察到这些值不是那个时候的。为了证明我已经收集了两个系统进程的磁盘 IO,io.counters()
并看到它在一段时间后以递增的顺序变化。这意味着它正在从进程的开头添加磁盘 IO。以下是快照:
PID: 10068 Disk 1597555 PID: 8608 Disk 99729700
PID: 10068 Disk 1597555 PID: 8608 Disk 99729828
PID: 10068 Disk 1597555 PID: 8608 Disk 99729956
PID: 10068 Disk 1597555 PID: 8608 Disk 99730212
PID: 10068 Disk 1598271 PID: 8608 Disk 99730340
PID: 10068 Disk 1598271 PID: 8608 Disk 99730596
PID: 10068 Disk 1598271 PID: 8608 Disk 99730724
PID: 10068 Disk 1598271 PID: 8608 Disk 99730852
PID: 10068 Disk 1598271 PID: 8608 Disk 99731108
PID: 10068 Disk 1598271 PID: 8608 Disk 99731236