Я хочу написать код Python для чтения дискового ввода-вывода и сетевого ввода-вывода в процентах, как мы видим в диспетчере задач Windows. В настоящее время я использую psutil.disk_io_counters()
и psutil.net_io_counters()
. Благодаря этому я получаю чтение байтов и запись байтов для дискового ввода-вывода и получение байтов и отправление байтов для сетевого ввода-вывода. . Но я не знаю, как перевести их в проценты. Также замечено, что 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()
мгновенный дисковый ввод-вывод или нет. Код:
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.counters()
, и увидел, что по прошествии времени он меняется в порядке возрастания. Это означает, что он добавляет дисковый ввод-вывод с начала процессов. Ниже приведен снимок:
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