2

Диспетчер задач Windows имеет возможность отображать текущее время ЦП любого данного запущенного процесса в Windows. Есть ли способ (не обязательно через диспетчер задач) получить текущее время процесса?

Например, скажем, у меня есть скрипт, который надежно работает в течение 45 минут. Без добавления индикатора выполнения в сценарий, есть ли способ выяснить, как долго он работает?

Математика, стоящая за этим, кажется довольно простой;

WallTime = CurrentWallTime - WallTimeProcessStarted.

Аналогично, поскольку математика настолько проста, есть ли способ получить время, когда процесс был запущен?

2 ответа2

1

Конечно. Общее истекшее время доступно через раздел производительности реестра и через API-интерфейс Toolhelp. И, конечно, если у вас есть истекшее время и текущее время, вы можете вычислить время начала.

Есть два способа получения информации через Win32, но ни один из них не является особенно простым. Способ, поддерживаемый с самых ранних выпусков WinNT, состоит в том, чтобы использовать RegQueryValueEx, чтобы сначала проанализировать список доступных счетчиков в HKEY_PERFORMANCE_DATA, а затем получить те, которые вам нужны, в интересующих вас экземплярах процесса. Более новый способ - использовать CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS), который был представлен в WinXP.

Вероятно, есть много приложений, которые могут сделать это, поэтому вы предлагаете список, который, я уверен, другие могут добавить. Вот как я это сделал в моей C-оболочке. ps -s перечисляет все системные процессы. Утилита uptime sample рассчитывает, как долго система работала, исходя из истекшего времени, сообщенного ps -s для процесса Idle.

Утилита Hamilton C shell ps сообщает истекшее время для системных процессов

(Активное время простоя - просто нечетное значение, сообщаемое Win7.)

1

Если вы хотите / можете использовать Python, есть нечто, называемое psutil, которое, вероятно, сработает. Кроме того, вы можете скачать его исходный код и посмотреть, какие вызовы Windows API он использует для предоставления информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .