Я использую wmi и python, чтобы отслеживать поведение процесса, запущенного на моем компьютере.

from win32com.client import GetObject
wmi = GetObject('winmgmts:')
processes = wmi.InstancesOf('Win32_Process')

for process in processes:
    print process.ProcessId, process.Name 

Win32_Process содержит много информации, но я не вижу ничего для отслеживания потребления ЦП. Окно «Монитор задач» показывает эту информацию, поэтому я думаю, что ее можно получить.

Я думал, что свойство WorkingSetSize определяет потребление памяти процессом, но я вижу значение, отличное от того, что дает TaskMonitor.

Как получить эти 2 значения для данного процесса?

Обновление: Монитор задач показывает PrivateWorkingSetSize, который, похоже, недоступен с Win32_Process. В чем разница между WorkingSetSize и PrivateWorkingSetSize?

15
luc 25 Сен 2009 в 12:06

3 ответа

Лучший ответ

Я почти уверен, что вам нужны классы производительности WMI Win32_PerfFormattedData_PerfProc_Process или Win32_PerfRawData_PerfProc_Process

Например. их свойства PercentProcessorTime и WorkingSet

Обратите внимание, что для понимания классов Perf требуется немного усилий.

Но эти классы WMI должны предоставить вам всю информацию, которую вы ищете.

11
Daryn 27 Янв 2021 в 19:48
Делает именно то, что я хочу! Большое спасибо
 – 
luc
24 Ноя 2009 в 09:00

Пожалуйста, посмотри:

Также могут быть интересны:

2
Randy Burden 25 Мар 2021 в 23:41
Спасибо за ответ. К сожалению, этот вопрос не отвечает на мой вопрос. Доступно ли использование процесса процессором с помощью объекта Win32_Process?
 – 
luc
25 Сен 2009 в 12:44
Ссылка «WMI Made Easy для C #» кажется мертвой.
 – 
damianb
10 Ноя 2012 в 07:16
Теперь работает - спасибо. Надеюсь, это окажется полезным для других при поиске в Google. :)
 – 
damianb
10 Ноя 2012 в 07:26

Win32_Process также имеет UserModeTime и KernelModeTime, которые можно использовать для расчета использования ЦП.

Также посмотрите http://technet.microsoft.com/en-us/library/ ee176718.aspx

1
Matt Watson 24 Янв 2014 в 08:13