ひよこ、通勤中。

通勤中の電車の中でひよこは何を思うのか。

モデルを学習させるときのスクリプトテンプレート in Python

  • 標準出力とファイルのログを書き出す
  • 好きなコア数で並列処理する
  • デバッグ中はデータ数少なくしたい

みたいなときこんな感じでかいたの使ってる

import time
import argparse
import logging
import multiprocessing
from pathlib import Path

logger = logging.getLogger(__name__)
fmt = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.DEBUG)
stream_handler.setFormatter(fmt)
logger.setLevel(logging.DEBUG)
logger.addHandler(stream_handler)
logger.propagate = False


def main(args):
    logger.debug('log test')
    pass


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--limit', default=None, type=int, help='Max data size')
    parser.add_argument('--log', default=None, type=str,
                        help='Path to log file.')
    parser.add_argument('--cpu', default=multiprocessing.cpu_count(), type=int)
    args = parser.parse_args()
    if args.log is not None:
        path = Path(args.log)
        path.parent.mkdir(parents=True, exist_ok=True)
        handler = logging.FileHandler(path, 'w')
        handler.setLevel(logging.DEBUG)
        logger.addHandler(handler)

    start = time.time()
    main(args)
    t = time.time() - start
    logger.info(f'Time: {t / 60:,.0f} min {t % 60:,.0f} sec')