Вопрос или проблема
Я пытаюсь написать скрипт на Python, чтобы выяснить, какой графический процессор (дискретный или встроенный) в данный момент работает. Мне удалось заставить его работать, запустив dxdiag и проанализировав вывод для режима каждого устройства GPU, но это занимает слишком много времени. Кто-нибудь знает, как dxdiag получает эту информацию? Есть ли способ получить эту информацию через WMI? Буду благодарен за помощь.
Спасибо
Класс WMI Win32_VideoController имеет свойство под названием Availability, которое может показать состояние видео контроллера, но не все устройства будут передавать значения в это свойство.
Попробуйте эту команду, чтобы вывести результат:
wmic path Win32_VideoController get Caption, Availability
В результате 3 означает полную мощность. Вы можете проверить https://msdn.microsoft.com/en-us/library/aa394512(v=vs.85).aspx для получения дополнительной информации.
Тем временем, вы можете рассмотреть возможность использования инструмента WMIExplorer, чтобы сэкономить время при поиске информации в WMI. Ссылка на загрузку: https://wmie.codeplex.com/
Ответ или решение
Чтобы определить, какой графический процессор (GPU) работает на данный момент с помощью WMI (Windows Management Instrumentation), вы можете использовать класс Win32_VideoController
. Этот класс предоставляет информацию о видеоконтроллерах, которые установлены на машине.
Для начала можно использовать следующую команду для получения информации о всех видеоконтроллерах:
wmic path Win32_VideoController get Caption, Availability
Команда выводит список видеоконтроллеров с их названиями (Caption
) и статусом доступности (Availability
). Статус доступности может иметь разные значения, и для вашего интереса наиболее важным будет значение "3", которое указывает на то, что графический процессор находится в режиме полной мощности (работает на полную мощность).
Вот краткий список некоторых значений статуса:
1
– Отключено2
– Неизвестно3
– В полном режиме4
– В режиме ожидания5
– Зависит от другого устройства
Если вам нужно получить эту информацию непосредственно из Python, вы можете использовать библиотеку WMI
. Вот пример кода на Python:
import wmi
# Создаем объект WMI
w = wmi.WMI()
# Запрашиваем класс Win32_VideoController
for gpu in w.Win32_VideoController():
print(f"Название: {gpu.Caption}")
print(f"Статус доступности: {gpu.Availability}")
if gpu.Availability == '3':
print("Этот GPU в режиме полной мощности.")
print("-----")
Этот скрипт выведет название каждого видеоконтроллера на компьютере и его статус доступности. Обратите внимание, что в разных версиях драйверов и аппаратного обеспечения программа может выводить разные значения, поэтому убедитесь, что вы сопоставляете вывод с документацией.
Также стоит учитывать возможность использования некоторых инструментов, таких как WMI Explorer (доступен по ссылке), который позволяет удобно исследовать данные WMI и находить необходимую информацию без написания кода.
Таким образом, используя описанные подходы, вы сможете быстро узнать, какой GPU активен на вашем компьютере, без необходимости в длительном анализе.