[Python] 使用中のCPUの名前や性能を確認する方法
Pythonで使用中のCPUの名前や性能を確認するには、psutil
やplatform
モジュールを使用します。
platform.processor()
を使うとCPUの名前を取得でき、psutil.cpu_freq()
でCPUの周波数、psutil.cpu_percent()
でCPU使用率を確認できます。
cpuinfo
ライブラリをインストールすれば、さらに詳細な情報(アーキテクチャやキャッシュサイズなど)も取得可能です。
CPU情報をPythonで取得する方法
Pythonでシステム情報を取得する基本
Pythonを使用してシステム情報を取得することは、プログラムのパフォーマンスを監視したり、システムの状態を把握するために非常に重要です。
特にCPU情報は、アプリケーションの効率を向上させるための鍵となります。
Pythonには、システム情報を簡単に取得できるいくつかのライブラリが用意されています。
CPU情報を取得するためのライブラリ
PythonでCPU情報を取得するための主なライブラリは以下の通りです。
ライブラリ名 | 特徴 |
---|---|
platform | 標準ライブラリで、基本的なシステム情報を取得 |
psutil | プロセスやシステムの情報を取得するための強力なライブラリ |
cpuinfo | CPUの詳細情報を取得するための専用ライブラリ |
標準ライブラリ platform の紹介
platform
モジュールは、Pythonに標準で含まれているライブラリで、システムの基本情報を取得するのに役立ちます。
CPUの名前やアーキテクチャなど、シンプルな情報を取得することができます。
import platform
# CPUの情報を取得
cpu_name = platform.processor()
architecture = platform.machine()
print(f"CPU名: {cpu_name}")
print(f"アーキテクチャ: {architecture}")
CPU名: Intel64 Family 6 Model 158 Stepping 10 GenuineIntel
アーキテクチャ: x86_64
サードパーティライブラリ psutil の紹介
psutil
は、システムのプロセスやリソース使用状況を取得するための強力なライブラリです。
CPUの使用率や周波数、コア数など、詳細な情報を簡単に取得できます。
import psutil
# CPUの周波数を取得
cpu_freq = psutil.cpu_freq()
cpu_percent = psutil.cpu_percent(interval=1)
cpu_count = psutil.cpu_count()
print(f"CPU周波数: {cpu_freq.current} MHz")
print(f"CPU使用率: {cpu_percent}%")
print(f"CPUコア数: {cpu_count}")
CPU周波数: 3200.0 MHz
CPU使用率: 0.9%
CPUコア数: 32
cpuinfo ライブラリの紹介
cpuinfo
は、CPUの詳細な情報を取得するための専用ライブラリです。
pip install py-cpuinfo
CPUのベンダー、ブランド名、キャッシュサイズなど、詳細な情報を取得することができます。
import cpuinfo
# CPUの詳細情報を取得
cpu_info = cpuinfo.get_cpu_info()
print(f"CPUベンダー: {cpu_info['vendor_id_raw']}")
print(f"CPUブランド名: {cpu_info['brand_raw']}")
print(f"キャッシュサイズ: {cpu_info['l2_cache_size'] // 1024 // 1024}MB")
CPUベンダー: GenuineIntel
CPUブランド名: Intel(R) Core(TM) i9-14900KF
キャッシュサイズ: 32MB
platform モジュールを使ったCPU情報の取得
platform.processor()でCPU名を取得する
platform.processor()メソッド
を使用すると、現在のシステムで使用されているCPUの名前を取得できます。
この情報は、CPUの種類やモデルを特定するのに役立ちます。
import platform
# CPU名を取得
cpu_name = platform.processor()
print(f"CPU名: {cpu_name}")
CPU名: Intel64 Family 6 Model 183 Stepping 1, GenuineIntel
このコードを実行すると、システムに搭載されているCPUの名前が表示されます。
これにより、特定のCPUに関連する情報を調べる際に便利です。
platform.machine()でアーキテクチャを確認する
platform.machine()メソッド
を使用すると、システムのアーキテクチャ(例えば、x86_64やARMなど)を確認できます。
アーキテクチャは、ソフトウェアの互換性やパフォーマンスに影響を与える重要な要素です。
import platform
# アーキテクチャを取得
architecture = platform.machine()
print(f"アーキテクチャ: {architecture}")
アーキテクチャ: AMD64
このコードを実行することで、システムのアーキテクチャが表示され、どのような環境でプログラムが動作しているかを把握できます。
platform.uname()でシステム全体の情報を取得する
platform.uname()メソッド
を使用すると、システム全体の情報を取得できます。
これには、システムの名前、リリース、バージョン、マシンの種類、プロセッサの情報などが含まれます。
import platform
# システム全体の情報を取得
system_info = platform.uname()
print(f"システム名: {system_info.system}")
print(f"ノード名: {system_info.node}")
print(f"リリース: {system_info.release}")
print(f"バージョン: {system_info.version}")
print(f"マシン: {system_info.machine}")
print(f"プロセッサ: {system_info.processor}")
システム名: Windows
ノード名: PCUserName
リリース: 11
バージョン: 10.0.22631
マシン: AMD64
プロセッサ: Intel64 Family 6 Model 183 Stepping 1, GenuineIntel
このコードを実行すると、システムに関する詳細な情報が表示され、システムの状態や構成を把握するのに役立ちます。
psutil モジュールを使ったCPU性能の確認
psutil.cpu_freq()でCPUの周波数を確認する
psutil.cpu_freq()メソッド
を使用すると、CPUの現在の周波数や最大・最小周波数を確認できます。
これにより、CPUのパフォーマンスを把握することができます。
import psutil
# CPUの周波数を取得
cpu_freq = psutil.cpu_freq()
print(f"現在のCPU周波数: {cpu_freq.current} MHz")
print(f"最大CPU周波数: {cpu_freq.max} MHz")
print(f"最小CPU周波数: {cpu_freq.min} MHz")
現在のCPU周波数: 3200.0 MHz
最大CPU周波数: 3200.0 MHz
最小CPU周波数: 0.0 MHz
このコードを実行すると、CPUの現在の周波数、最大周波数、最小周波数が表示され、CPUの性能を評価するのに役立ちます。
psutil.cpu_percent()でCPU使用率を確認する
psutil.cpu_percent()メソッド
を使用すると、CPUの使用率をパーセンテージで取得できます。
特定の時間間隔を指定することで、リアルタイムの使用率を監視することも可能です。
import psutil
import time
# CPU使用率を取得(1秒間隔)
cpu_usage = psutil.cpu_percent(interval=1)
print(f"CPU使用率: {cpu_usage}%")
CPU使用率: 15.0%
このコードを実行すると、指定した時間間隔内のCPU使用率が表示され、システムの負荷状況を把握できます。
psutil.cpu_count()でコア数を確認する
psutil.cpu_count()メソッド
を使用すると、システムに搭載されているCPUコアの数を確認できます。
これにより、マルチスレッド処理の効率を評価することができます。
import psutil
# CPUコア数を取得
physical_cores = psutil.cpu_count(logical=False)
logical_cores = psutil.cpu_count(logical=True)
print(f"物理コア数: {physical_cores}")
print(f"論理コア数: {logical_cores}")
物理コア数: 24
論理コア数: 32
このコードを実行すると、物理コア数と論理コア数が表示され、CPUの性能を理解するのに役立ちます。
psutil.cpu_stats()でCPUの統計情報を取得する
psutil.cpu_stats()メソッド
を使用すると、CPUに関する統計情報を取得できます。
これには、割り込み数、コンテキストスイッチ数などが含まれ、psutil.boot_time()
を使うことで、稼働時間を計算できます。
import psutil
import time
# CPUの統計情報を取得
cpu_stats = psutil.cpu_stats()
print(f"割り込み数: {cpu_stats.interrupts}")
print(f"コンテキストスイッチ数: {cpu_stats.ctx_switches}")
# システムの稼働時間を計算
boot_time = psutil.boot_time()
current_time = time.time()
uptime = current_time - boot_time
print(f"システムの稼働時間: {uptime // 60}分")
割り込み数: 2110831362
コンテキストスイッチ数: 259586965
システムの稼働時間: 1662.0分
このコードを実行すると、CPUに関する詳細な統計情報が表示され、システムのパフォーマンスをより深く理解することができます。
cpuinfo ライブラリを使った詳細なCPU情報の取得
cpuinfo.get_cpu_info()で詳細なCPU情報を取得する
cpuinfo
ライブラリを使用すると、CPUに関する詳細な情報を簡単に取得できます。
cpuinfo.get_cpu_info()メソッド
を使うことで、CPUのベンダー、ブランド名、キャッシュサイズなど、さまざまな情報を取得できます。
import cpuinfo
from pprint import pprint
# CPUの詳細情報を取得
cpu_info = cpuinfo.get_cpu_info()
# 整形して表示
pprint(cpu_info)
{'arch': 'X86_64',
'arch_string_raw': 'AMD64',
'bits': 64,
'brand_raw': 'Intel(R) Core(TM) i9-14900KF',
'count': 32,
'cpuinfo_version': [9, 0, 0],
'cpuinfo_version_string': '9.0.0',
'family': 6,
'flags': ['3dnow',
'3dnowprefetch',
'abm',
...
],
'hz_actual': [3200000000, 0],
'hz_actual_friendly': '3.2000 GHz',
'hz_advertised': [3187000000, 0],
'hz_advertised_friendly': '3.1870 GHz',
'l2_cache_associativity': 7,
'l2_cache_line_size': 2048,
'l2_cache_size': 33554432,
'l3_cache_size': 37748736,
'model': 183,
'python_version': '3.12.4.final.0 (64 bit)',
'stepping': 1,
'vendor_id_raw': 'GenuineIntel'}
このコードを実行すると、CPUに関する詳細な情報が辞書形式で表示されます。
CPUのベンダーやブランド名の取得
CPUのベンダーやブランド名は、システムの性能や互換性を評価するために重要です。
以下のコードで、これらの情報を取得できます。
import cpuinfo
# CPUの詳細情報を取得
cpu_info = cpuinfo.get_cpu_info()
# ベンダーとブランド名を表示
vendor = cpu_info['vendor_id_raw']
brand = cpu_info['brand_raw']
print(f"CPUベンダー: {vendor}")
print(f"CPUブランド名: {brand}")
CPUベンダー: GenuineIntel
CPUブランド名: Intel(R) Core(TM) i9-14900KF
このコードを実行すると、CPUのベンダーとブランド名が表示され、特定のCPUの特性を理解するのに役立ちます。
キャッシュサイズやアーキテクチャの確認
CPUのキャッシュサイズやアーキテクチャも、性能に大きな影響を与えます。
以下のコードで、これらの情報を取得できます。
import cpuinfo
# CPUの詳細情報を取得
cpu_info = cpuinfo.get_cpu_info()
# キャッシュサイズとアーキテクチャを表示
l2_cache = cpu_info['l2_cache_size']
l3_cache = cpu_info['l3_cache_size']
architecture = cpu_info['arch_string_raw']
print(f"L2キャッシュサイズ: {l2_cache // 1024} KB")
print(f"L3キャッシュサイズ: {l3_cache // 1024} KB")
print(f"アーキテクチャ: {architecture}")
L2キャッシュサイズ: 32768 KB
L3キャッシュサイズ: 36864 KB
アーキテクチャ: AMD64
このコードを実行すると、L2およびL3キャッシュサイズ、アーキテクチャが表示され、CPUの性能を評価するための重要な情報が得られます。
拡張命令セットの確認
CPUがサポートする拡張命令セットは、特定のアプリケーションや処理の効率に影響を与えます。
以下のコードで、サポートされている拡張命令セットを確認できます。
import cpuinfo
# CPUの詳細情報を取得
cpu_info = cpuinfo.get_cpu_info()
# 拡張命令セットを表示
flags = cpu_info['flags']
print(f"サポートされている拡張命令セット: {', '.join(flags)}")
サポートされている拡張命令セット: fpu, vme, de, pse, tsc, msr, pae, mce, cx8, apic, ...
このコードを実行すると、CPUがサポートする拡張命令セットのリストが表示され、特定のアプリケーションのパフォーマンスを最適化するための情報が得られます。
応用例:CPU情報を使ったシステムモニタリング
CPU使用率をリアルタイムで監視する
CPU使用率をリアルタイムで監視することで、システムの負荷状況を把握し、必要に応じてリソースを調整することができます。
以下のコードは、1秒ごとにCPU使用率を表示する例です。
import psutil
import time
print("CPU使用率をリアルタイムで監視します。")
try:
while True:
cpu_usage = psutil.cpu_percent(interval=1)
print(f"CPU使用率: {cpu_usage}%")
except KeyboardInterrupt:
print("監視を終了します。")
CPU使用率: 15.0%
CPU使用率: 20.0%
CPU使用率: 10.0%
...
このコードを実行すると、CPU使用率がリアルタイムで表示され、システムの負荷を簡単に監視できます。
CPU温度を取得してシステムの健康状態を確認する
CPUの温度を監視することは、システムの健康状態を確認するために重要です。
psutil
ライブラリでは直接温度を取得することはできませんが、sensors
コマンドを使用して温度を取得することができます。
以下は、Linux環境での例です。
# Windowsでは動作しません
import subprocess
def get_cpu_temperature():
# sensorsコマンドを実行してCPU温度を取得
result = subprocess.run(['sensors'], capture_output=True, text=True)
return result.stdout
# CPU温度を表示
cpu_temp_info = get_cpu_temperature()
print(cpu_temp_info)
Core 0: +45.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +46.0°C (high = +80.0°C, crit = +100.0°C)
...
このコードを実行すると、CPUの温度情報が表示され、システムの健康状態を把握できます。
複数コアの使用率を個別にモニタリングする
複数コアの使用率を個別にモニタリングすることで、どのコアが最も負荷を受けているかを把握できます。
以下のコードは、各コアの使用率を表示する例です。
import psutil
import time
print("各CPUコアの使用率を監視します。")
try:
while True:
core_usage = psutil.cpu_percent(interval=1, percpu=True)
for i, usage in enumerate(core_usage):
print(f"コア {i}: {usage}%")
except KeyboardInterrupt:
print("監視を終了します。")
コア 0: 10.0%
コア 1: 15.0%
コア 2: 5.0%
コア 3: 20.0%
...
このコードを実行すると、各CPUコアの使用率がリアルタイムで表示され、負荷の分散状況を確認できます。
CPU情報をログに記録してパフォーマンスを分析する
CPU情報を定期的にログに記録することで、パフォーマンスの分析やトラブルシューティングに役立ちます。
以下のコードは、CPU使用率と温度をログファイルに記録する例です。
import psutil
import time
import logging
# ログの設定
logging.basicConfig(filename='cpu_monitor.log', level=logging.INFO)
print("CPU情報をログに記録します。")
try:
while True:
cpu_usage = psutil.cpu_percent()
cpu_temp_info = subprocess.run(['sensors'], capture_output=True, text=True).stdout
logging.info(f"CPU使用率: {cpu_usage}%, 温度情報:\n{cpu_temp_info}")
time.sleep(60) # 1分ごとに記録
except KeyboardInterrupt:
print("ログ記録を終了します。")
このコードを実行すると、CPU使用率と温度情報がcpu_monitor.log
ファイルに記録され、後でパフォーマンスを分析する際に役立ちます。
まとめ
この記事では、Pythonを使用してCPUの情報を取得する方法や、システムモニタリングの応用例について詳しく解説しました。
特に、platform
、psutil
、cpuinfo
といったライブラリを活用することで、CPUの性能や状態をリアルタイムで把握することが可能です。
これらの情報を基に、システムのパフォーマンスを最適化したり、トラブルシューティングを行ったりすることができるでしょう。
ぜひ、実際にコードを試してみて、あなたのシステム環境に合わせたモニタリングツールを作成してみてください。