Ваш Python в порядке, за исключением пропущенной точки с запятой после else
.
Чтобы увидеть, что идет не так, начните с проверки того, что система будет занята.Запустите команду с интенсивным использованием процессора в каком-либо другом окне терминала, например:
yes | wc -c
Если у вас нет запасного окна терминала, запустите его в фоновом режиме, например:
yes | wc -c &
Во время выполнения этой команды выполните vmstat 1 5
и убедитесь, что она показывает, что система использует ЦП.
Теперь запустите команду, которую ваша программа сообщает Python:
vmstat|tail -1
Сделайте это несколько раз.Это скажет вам, почему ваша программа всегда показывает одинаковые цифры.Это потому, что vmstat
без аргументов всегда показывает одинаковые цифры.
Ну, технически это не совсем так, он не всегда показывает одинаковые значения.Эти значения могут медленно меняться со временем.На самом деле происходит следующее (скопировано со справочной страницы vmstat
):
vmstat
сообщает информацию о процессах, памяти, поисковом вызове, блочном вводе-выводе, ловушках, дисках и активности процессора.
В первом созданном отчете приводятся средние значения с момента последней перезагрузки.
Если ваша система некоторое время работала, то для изменения средних значений, отображаемых на этом, потребуется много действий.Первая строка.
Чтобы исправить, измените вашу программу на Python на vmstat 1 2|tail -1
.(Выполните это самостоятельно пару раз, чтобы убедиться, что оно показывает то, что вы хотите, чтобы оно показывало.) Очевидно, что для накопления и выдачи обновленных данных потребуется секунда, но для целей этой программы это, вероятно, приемлемо.В зависимости от того, насколько чувствительным должен быть ваш мониторинг, вы можете даже попросить vmstat
производить выборку в течение более длительного периода.
Не забудьте убить процессорное время, которое работает в фоновом режиме или в некоторых случаях.другой терминал.