Доступ к температуре процессора в python

Мне нужен пример кода для доступа к температуре процессора в python.

Я запускаю Windows 7, BTW.

  • Температура чтения с датчиком термопары MAX31855 на Windows IoT
  • Получить температуру процессора в python на окнах
  • Получение температуры процессора с помощью Python?
  • 4 Solutions collect form web for “Доступ к температуре процессора в python”

    Используйте модуль WMI + Open Hardware Monitor + его интерфейс WMI, описанный здесь .

    Образец кода:

    import wmi w = wmi.WMI(namespace="root\OpenHardwareMonitor") temperature_infos = w.Sensor() for sensor in temperature_infos: if sensor.SensorType==u'Temperature': print(sensor.Name) print(sensor.Value) 

    Вы можете использовать pywin32 для доступа к собственному API Windows. Я считаю, что должно быть возможно запросить Windows API для температуры процессора, если производитель вашего драйвера материнской платы зарегистрирует поставщика данных WMI через свой драйвер. Предполагая, что это так, вы можете загрузить расширения pywin32 и модуль WMI Python, упомянутый в ответе ars, и затем действовать следующим образом:

     import wmi w = wmi.WMI() print w.Win32_TemperatureProbe()[0].CurrentReading 

    Глядя на скрипт IronPython в ответе ars, кажется, есть и другой способ сделать это, используя другой объект WMI. Используя тот же API и подход, вы можете попробовать получить значение температуры с помощью

     w = wmi.WMI(namespace="root\wmi") temperature_info = w.MSAcpi_ThermalZoneTemperature()[0] print temperature_info.CurrentTemperature 

    который, очевидно, должен вернуть значение температуры в десятых долях Кельвина, чтобы получить степень по Цельсию. Думаю, вы просто разделите это значение на 10 и вычтите ~ 273.

    Проверьте библиотеку cputemp .

    EDIT: в Windows вы можете преобразовать этот скрипт IronPython, который использует WMI, используя библиотеку WMI python.

    Код, предлагаемый eadmaster, может работать для старых процессоров, для которых запрограммирован OpenHardwareMonitor, но у меня есть процессор Skylake i7 6700K. OpenHardwareMonitor не дал мне никаких результатов. Однако есть вилка этой программы под названием CPU Thermometer , основанная на OpenHardwareMonitor, которая распознает мой процессор.

    В погоне за тем, как получить CPU temps через Python, я переключился на IronPython, чтобы иметь доступ к инфраструктуре .Net и иметь легкий доступ к другим данным о производительности, но довольно легко понять, как ретро подходит для ванили Python 2.7 (просто запустите процессорный термометр вместо OpenHardwareMonitor и измените ваше пространство имен на «root \ CPUThermometer»? Это может быть так просто?).

     # # CPU Temp --REQUIRES CPU TEMPERATURE TO BE RUNNING!-- # import clr clr.AddReference('System.Management') from System.Management import (ManagementScope, ManagementObject, ManagementObjectSearcher, WqlObjectQuery) scope = ManagementScope("root\CPUThermometer") searcher = ManagementObjectSearcher(scope, WqlObjectQuery("SELECT * FROM Sensor Where SensorType LIKE 'Temperature'"), None) mo = ManagementObject() print "\n" print " Temp Min Max" strout = str(' ') for mo in searcher.Get(): strout = '{0} {1} C {2} C {3} C\n{4}'.format(mo["Name"], mo["Value"], mo["Min"], mo["Max"], strout) print strout 

    Результат выборки:

     D:\IronPython 2.7>ipy64 c:\users\neamerjell\desktop\test.py Temp Min Max CPU Core #1 21.0 C 20.0 C 37.0 C CPU Core #2 23.0 C 21.0 C 39.0 C CPU Core #3 21.0 C 20.0 C 32.0 C CPU Core #4 21.0 C 20.0 C 36.0 C 

    Я нашел трудный способ, что запрос не является стандартным SQL и НЕ НРАВИТСЯ с предложением «Заказать по», поэтому мне пришлось сделать какое-то причудливое форматирование строк, чтобы получить правильный порядок, поскольку запрос возвращает ядра в обратном порядке. Это немного озадачило меня, пока я не разработал этот способ вокруг него.

    Python - лучший язык программирования в мире.