Python で CPU 温度にアクセスするためのサンプル コードが必要です。
ところで、Windows 7を実行しています。
pywin32を使用してネイティブ Windows API にアクセスできます。メインボード ドライバーの製造元がドライバーを介して WMI データ プロバイダーを登録している場合は、Windows API に CPU 温度を問い合わせることができるはずです。この場合、ars による回答に記載されているpywin32 拡張機能とPython WMI モジュールをダウンロードして、次のように進めることができます。
import wmi
w = wmi.WMI()
print w.Win32_TemperatureProbe()[0].CurrentReading
ars' answer の IronPython スクリプトを見ると、別の WMI オブジェクトを使用して別の方法があるようです。同じ API とアプローチを使用して、温度値の受信を試みることができます
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print temperature_info.CurrentTemperature
どうやら温度値をケルビンの 10 分の 1 で返す必要があるため、摂氏で度を受け取るには、この値を 10 で割って ~273 を引くだけだと思います。
cputempライブラリを確認してください。
編集: Windows では、python WMI ライブラリを使用して、WMI を使用するこのIronPython スクリプトを変換できる場合があります。
eadmaster が提供するコードは、OpenHardwareMonitor がプログラムされている古い CPU でも機能する可能性がありますが、私は Skylake i7 6700K CPU を使用しています。OpenHardwareMonitor は結果を提供しませんでした。ただし、 CPU Thermometerと呼ばれるこのプログラムのフォークがあり、これは私の CPU を認識するOpenHardwareMonitor に基づいています。
Python 経由で CPU 温度を取得する方法を追跡する中で、.Net フレームワークにアクセスし、他のパフォーマンス データに簡単にアクセスできるようにするために、IronPython に切り替えましたが、バニラにレトロフィットする方法を理解するのはかなり簡単なはずです。 Python 2.7 (OpenHardwareMonitor の代わりに CPU 温度計を実行し、名前空間を「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 ではなく、「Order By」句が好きではないという難しい方法を見つけたので、クエリがコアを逆順で返すため、順序を正しくするために派手な文字列フォーマットを行う必要がありました。この方法を考案するまで、これは私を少し困惑させました。