コマンドライン引数の管理モジュールのargparseとpython-fireをコード数と処理時間で比較してみました
#argparse
argparseをインポートする直前に現在時刻を取得して処理時間を計測します、if __name__ == '__main__':
内のコードの量が多く、say
を3回も繰り返して記述してありスマートではありません。
import time
start = time.time()
import argparse
def say():
print(f"開始から{time.time()-start}秒経過")
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--say",action="store_true")
args = parser.parse_args()
if args.say:
say()
これを実行以下のコマンドで実行します
$python3 argparse_test.py --say
出力は
開始から0.01373600959777832秒経過
処理速度は速いです
#python-fire
argparseに比べてif __name__ == '__main__':
内のコード量はたったの一行です
import time
start = time.time()
import fire
def say():
print(f"開始から{time.time()-start}秒経過")
if __name__ == '__main__':
fire.Fire()
以下のコマンドで実行します
python3 fire_test.py say
出力は
開始から0.7563726902008057秒経過
python-fireの読み込みに0.7秒ぐらいかかっていますがシンプルです