[Python] 使用中のCPUの名前や性能を確認する方法

Pythonで使用中のCPUの名前や性能を確認するには、psutilplatformモジュールを使用します。

platform.processor()を使うとCPUの名前を取得でき、psutil.cpu_freq()でCPUの周波数、psutil.cpu_percent()でCPU使用率を確認できます。

cpuinfoライブラリをインストールすれば、さらに詳細な情報(アーキテクチャやキャッシュサイズなど)も取得可能です。

この記事でわかること
  • PythonでCPU情報を取得する方法
  • platformモジュールの使い方
  • psutilライブラリによる性能確認
  • cpuinfoライブラリで詳細情報を取得
  • CPU情報を活用したシステムモニタリング

目次から探す

CPU情報をPythonで取得する方法

Pythonでシステム情報を取得する基本

Pythonを使用してシステム情報を取得することは、プログラムのパフォーマンスを監視したり、システムの状態を把握するために非常に重要です。

特にCPU情報は、アプリケーションの効率を向上させるための鍵となります。

Pythonには、システム情報を簡単に取得できるいくつかのライブラリが用意されています。

CPU情報を取得するためのライブラリ

PythonでCPU情報を取得するための主なライブラリは以下の通りです。

スクロールできます
ライブラリ名特徴
platform標準ライブラリで、基本的なシステム情報を取得
psutilプロセスやシステムの情報を取得するための強力なライブラリ
cpuinfoCPUの詳細情報を取得するための専用ライブラリ

標準ライブラリ 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

pip install 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ファイルに記録され、後でパフォーマンスを分析する際に役立ちます。

よくある質問

psutilやcpuinfoをインストールする方法は?

psutilcpuinfoは、Pythonのパッケージ管理ツールであるpipを使用して簡単にインストールできます。

以下のコマンドをターミナルまたはコマンドプロンプトで実行してください。

pip install psutil cpuinfo

これにより、両方のライブラリがインストールされ、Pythonプログラムで使用できるようになります。

CPU情報が正しく取得できない場合の対処法は?

CPU情報が正しく取得できない場合、以下の点を確認してください。

  • ライブラリのインストール: psutilcpuinfoが正しくインストールされているか確認します。

再インストールを試みることも有効です。

  • Pythonのバージョン: 使用しているPythonのバージョンがライブラリの要件を満たしているか確認します。

特に古いバージョンのPythonでは、最新のライブラリが動作しないことがあります。

  • 権限の確認: 一部のシステム情報は管理者権限が必要な場合があります。

必要に応じて、管理者としてスクリプトを実行してください。

  • OSの互換性: 使用しているオペレーティングシステムがライブラリに対応しているか確認します。

特にLinuxやmacOSでは、特定のコマンドが必要な場合があります。

マルチコアCPUの使用率を個別に取得する方法は?

マルチコアCPUの使用率を個別に取得するには、psutil.cpu_percent()メソッドpercpu=Trueオプションを指定して呼び出します。

以下のコードは、各コアの使用率を取得する例です。

import psutil
# 各CPUコアの使用率を取得
core_usage = psutil.cpu_percent(percpu=True)
for i, usage in enumerate(core_usage):
    print(f"コア {i}: {usage}%")

このコードを実行すると、各コアの使用率が表示され、どのコアが最も負荷を受けているかを把握できます。

まとめ

この記事では、Pythonを使用してCPUの情報を取得する方法や、システムモニタリングの応用例について詳しく解説しました。

特に、platformpsutilcpuinfoといったライブラリを活用することで、CPUの性能や状態をリアルタイムで把握することが可能です。

これらの情報を基に、システムのパフォーマンスを最適化したり、トラブルシューティングを行ったりすることができるでしょう。

ぜひ、実際にコードを試してみて、あなたのシステム環境に合わせたモニタリングツールを作成してみてください。

  • URLをコピーしました!
目次から探す