ほげほげ

プログラミング、英会話、ヨガ、料理などの備忘録など。

Pythonコマンドラインで、時間のかかる処理をローディング中に見せる

コマンドラインで、時間のかかる処理を行うと、標準出力の見た目上、処理が停止しているのかわからない。
ドットを1秒おきに表示して、フリーズしてないことをアピールするコード。

import sys,time,threading

#時間のかかる同期処理
def longFunction():
    time.sleep(10)


# 時間のかかる処理をスレッドで処理
t = threading.Thread(target=longFunction)
t.start()

# スレッドが終わるまでループ
while True:
    sys.stdout.write('.')
    sys.stdout.flush()
    time.sleep(1)
    if(not t.isAlive()): # スレッドが終了していたらループを抜ける
        break
print('DONE')

ぱっと見、もっといい方法はいっぱいありそうだったけど、とりあえず、やりたいことができるためのコード。