Ho bisogno di un codice di esempio per accedere alla temperatura della CPU in python.Accesso alla temperatura della CPU in python
Sono in esecuzione Windows 7, BTW.
Ho bisogno di un codice di esempio per accedere alla temperatura della CPU in python.Accesso alla temperatura della CPU in python
Sono in esecuzione Windows 7, BTW.
Controlla la libreria cputemp.
MODIFICA: in Windows, è possibile convertire questo IronPython script che utilizza WMI utilizzando il python WMI library.
È possibile utilizzare pywin32 per accedere all'API di Windows nativo. Credo che dovrebbe essere possibile interrogare l'API di Windows per la temperatura della CPU se il produttore del driver della scheda madre registra un provider di dati WMI tramite il proprio driver. Supponendo che questo è il caso si può scaricare il pywin32 extensions e il Python WMI module menzionato nella risposta da ars, e quindi procedere come segue:
import wmi
w = wmi.WMI()
print w.Win32_TemperatureProbe()[0].CurrentReading
Guardando lo script IronPython nella risposta ars' sembra che ci sia un altro modo per fallo anche tu, usando un oggetto WMI diverso. Utilizzando la stessa API e l'approccio si potrebbe provare a ricevere il valore della temperatura con
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print temperature_info.CurrentTemperature
che a quanto pare dovrebbe restituire il valore della temperatura in decimi di Kelvin, in tal modo di ricevere la laurea in Celsius Credo che basta dividere questo valore per 10 e sottrarre ~ 273.
Ottengo il seguente errore con il primo codice: Traceback (chiamata più recente scorso): file "
Ottengo un sacco di errori (OLE/COM) quando si provano entrambi gli approcci. Qualche idea sul perché potrebbe essere? – Dan
Utilizzare WMI module + Open Hardware Monitor + its WMI interface described here.
codice di esempio:
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)
Il codice offerta dalla eadmaster può funzionare per le CPU più vecchi che OpenHardwareMonitor è stato programmato per, ma ho una CPU i7 6700K Skylake. OpenHardwareMonitor non ha offerto risultati per me. Tuttavia, esiste un fork di questo programma chiamato CPU Thermometer, che è basato su OpenHardwareMonitor che fa riconosce la mia CPU.
Nel cercare in che modo ottenere i temp della CPU tramite Python, sono passato a IronPython per poter accedere al framework .Net e avere un facile accesso ad altri dati sulle prestazioni, ma dovrebbe essere abbastanza facile capire come utilizzare il retro adattarlo per Vanilla Python 2.7 (Basta eseguire il termometro della CPU invece diOpenHardwareMonitor e cambiare il tuo spazio dei nomi in "root \ CPUThermometer"? Potrebbe essere così semplice?).
#
# 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
Output di esempio:
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
ho scoperto nel modo più duro che la query non è SQL abbastanza standard e non piace l ' "Ordine By" clausola, così ho dovuto fare qualche stringa di fantasia formattazione per ottenere l'ordine corretto in quanto la query restituisce i nuclei in ordine inverso. Questo mi ha sconcertato per un po 'fino a quando non ho escogitato questo modo di aggirarlo.
Tuttavia, non sembra supportare i sistemi operativi Windows. –
Mi dice che il mio hardware non è supportato:/ – rectangletangle
Quindi python non è probabilmente una buona scelta di lingua per le tue esigenze. –