いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

Pythonメモ-17 (psutil, システム情報取得, 空きメモリ取得)

概要

たまに空きメモリ量をスクリプトで取りたいときに、よく忘れるのでメモ。

psutil モジュール自体は、メモリ量だけじゃなくてシステム情報いろいろ取得できる超便利なモジュール。

ネットワークの情報取得とかは重宝してます。

メモリ量は

psutil.virtual_memory()

から取得できます。

サンプル

# coding: utf-8
"""
psutil モジュールについてのサンプルです。
"""
import psutil as ps

from trypython.common.commoncls import SampleBase
from trypython.common.commonfunc import pr


class Sample(SampleBase):
    def exec(self):
        # ---------------------------------------------------------------
        # [link]
        # https://github.com/giampaolo/psutil
        # ---------------------------------------------------------------
        # psutil モジュールは
        #   - CPU時間
        #   - メモリ情報
        #   - ディスク情報
        #   - ネットワーク情報
        #   - センサー情報
        #   - ユーザ情報
        #   - プロセス情報
        # といったシステム情報が取得できる便利なモジュール。
        # ---------------------------------------------------------------
        # 空きメモリを取得するには、virtual_memory() を使用して取得できる
        # svmem オブジェクトの available プロパティから取得できる。
        # ---------------------------------------------------------------
        virtual_memory = ps.virtual_memory()
        available_memory_bytes = virtual_memory.available  # type: int

        available_memory_gb = self._to_gb(float(available_memory_bytes))
        pr('available_memory', self._adjust(available_memory_gb))

    def _to_kb(self, byte_size: float) -> float:
        return byte_size / 1024

    def _to_mb(self, byte_size: float) -> float:
        return self._to_kb(byte_size) / 1024

    def _to_gb(self, byte_size: float) -> float:
        return self._to_mb(byte_size) / 1024

    def _adjust(self, value: float) -> float:
        return round(value, 2)


def go():
    obj = Sample()
    obj.exec()


if __name__ == '__main__':
    go()

サンプルは以下からも見れます。

try-python/psutil01.py at master · devlights/try-python · GitHub

参考情報

system - How to get current CPU and RAM usage in Python? - Stack Overflow

GitHub - giampaolo/psutil: A cross-platform process and system utilities module for Python


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。