import clr #package pythonnet, not clr import wmi import time openhardwaremonitor_hwtypes = ['Mainboard','SuperIO','CPU','RAM','GpuNvidia','GpuAti','TBalancer','Heatmaster','HDD'] cputhermometer_hwtypes = ['Mainboard','SuperIO','CPU','GpuNvidia','GpuAti','TBalancer','Heatmaster','HDD'] openhardwaremonitor_sensortypes = ['Voltage','Clock','Temperature','Load','Fan','Flow','Control','Level','Factor','Power','Data','SmallData'] cputhermometer_sensortypes = ['Voltage','Clock','Temperature','Load','Fan','Flow','Control','Level'] def initialize_openhardwaremonitor(): file = 'OpenHardwareMonitorLib' clr.AddReference(file) from OpenHardwareMonitor import Hardware handle = Hardware.Computer() handle.MainboardEnabled = True handle.CPUEnabled = True handle.RAMEnabled = True handle.GPUEnabled = True handle.HDDEnabled = True handle.Open() return handle def initialize_cputhermometer(): file = r'C:\Users\Tednokent01\Downloads\MyCity\traffic_analyzer\CPUThermometerLib' clr.FindAssembly(file) clr.AddReference(file) from CPUThermometer import Hardware handle = Hardware.Computer() handle.CPUEnabled = True handle.Open() return handle def fetch_stats(handle): for i in handle.Hardware: i.Update() for sensor in i.Sensors: parse_sensor(sensor) for j in i.SubHardware: j.Update() for subsensor in j.Sensors: parse_sensor(subsensor) def parse_sensor(sensor): if sensor.Value is not None: if type(sensor).__module__ == 'CPUThermometer.Hardware': sensortypes = cputhermometer_sensortypes hardwaretypes = cputhermometer_hwtypes elif type(sensor).__module__ == 'OpenHardwareMonitor.Hardware': sensortypes = openhardwaremonitor_sensortypes hardwaretypes = openhardwaremonitor_hwtypes else: return if sensor.SensorType == sensortypes.index('Temperature'): print(u"%s %s Temperature Sensor #%i %s - %s\u00B0C" % (hardwaretypes[sensor.Hardware.HardwareType], sensor.Hardware.Name, sensor.Index, sensor.Name, sensor.Value)) if __name__ == "__main__": print("OpenHardwareMonitor:") start = time.time() #HardwareHandle = initialize_openhardwaremonitor() #print(time.time() - start) #start = time.time() #fetch_stats(HardwareHandle) print(time.time() - start) print("\nCPUMonitor:") CPUHandle = initialize_cputhermometer() fetch_stats(CPUHandle)