サンプルプログラム用のオリジナルライブラリ

NO IMAGE

このサイトのPythonのサンプルコードは、よく使う処理をまとめたライブラリを使用していることがあります。

このコードをCoushLib.pyで保存し、サンプルコードと同じフォルダに置くことで、サンプルコードが動作するようになります。

使い方

このライブラリを使う場合、この記事の末尾にあるコードをCoushLib.pyという名前で実行したいプログラムと同じフォルダに保存し、サンプルコードのimport節にこのように記述します。

import CoushLib as cl

実装されている機能

Class RapTime : 処理時間計測クラス

処理にかかる時間を計測するためのクラス。複数のポイントでの経過時間を計測できる。メソッドは以下の通り。

rap(label)

呼び出すと、生成、または以前のrap,rapandprint,resetメソッド実行からの経過時間を記録する。labelには何の処理をしたかの文字列を入れる。戻り値はfloat値の秒数。

rapandprint(label)

rapと同じだが、標準出力でラベルと経過時間を表示する。デバッグなどに使用する。

reset()

計測タイマーを呼び出した時点でリセットする。計測履歴はクリアされない。トータルの時間で計測したくない処理がある場合、処理後に実行する。

printhistory()

rap,rapprintを実行した履歴と、処理時間の一覧を出力する。合計時間も出力する。

CoushLib.py

import time

# 処理時間を記録するクラス
class RapTime():
    starttime = time.perf_counter()  # クラスが生成された時間
    history = []  # ラップタイムの履歴

    # コンストラクタ:初期化処理
    def __init__(self):
        pass

    # ラップタイムを記録
    def rap(self, label):
        t = time.perf_counter()  # 呼ばれた瞬間の時刻を取得
        self.starttime, t = t, t - self.starttime  # timeを更新し、beforetimeにかかった時間を代入
        self.history.append([label, t])  # ラップタイムを記録
        return t  # かかった時間を返す

    # ラップタイムを計測して画面に出力
    def rapandprint(self, label):
        self.rap(label)
        self.printrap(self.history[len(self.history) - 1])

    # 計測時間をリセット
    def reset(self):
        self.starttime = time.perf_counter()

    # ラップタイムの一覧を出力
    def printhistory(self):
        total = 0  # 合計時間カウンタ
        for h in self.history:
            self.printrap(h)
            # print("{} : {} sec".format(h[0], h[1]))  # ラップタイム履歴を出力
            total += h[1]  # 合計時間を加算
        print("[total] : {} sec".format(total))  # 合計時間を出力

    # 計測時間を1行出力する
    def printrap(self, historyrecord):
        print("{} : {} sec".format(historyrecord[0], historyrecord[1]))  # ラップタイム履歴を出力