実行したファイルの残り時間をターミナルに表示する

機械学習のプログラムを書き始めると、大きいファイルを扱う機会が増えた。 そこでターミナルに残り時間を表示させたいと思ったので、 h5ファイルを作成する関数を例にしてメモっておく。

def create_h5(h5_fpath, image_fpaths, better_model, num):
    start_time = datetime.now() # 現在時刻取得
    print('============================')
    print("Start: " + str(start_time))
    print("Num  : " + str(num)) # 読み込む画像の枚数
    
    with h5py.File(h5_fpath, "w") as f:
        for i, image_fpath in enumerate(image_fpaths):
            # ここでファイルを読み込んでh5ファイルを作成する処理を行っていることとする
            
            # 100枚毎に残り時間を表示させる
            if i % 100 == 0 and i != 0:
                elapsed_time = datetime.now() - start_time  # 経過時間
                ave_time = elapsed_time/i                   # 現在における1つあたりの平均処理時間を算出
                remain_time = (ave_time*num) - elapsed_time # 「平均*画像枚数」で全体的なかかる時間を計算し、経過時間を引く
                print(str(i)+": "+str(remain_time)+" left")

実際の出力はこんな感じ。

4200: 0:00:57.961352 left
4300: 0:00:50.587814 left
4400: 0:00:43.323896 left
4500: 0:00:35.996341 left
4600: 0:00:28.692517 left
4700: 0:00:21.979801 left
4800: 0:00:14.650676 left
4900: 0:00:07.381439 left