Pythonで処理の中にスリープを入れたけど何秒経ったのか可視化したい
この記事ではこんな悩みについて書いていきます。
- Pythonでカウントダウンの処理のコード
- カウントダウンのコードの内容について
- カウントダウンのコード実行例
カウントダウンタイマーをPythonで書いたコード【コピペでOK】
from time import sleep
def count_down(max_time, interval_sec=1):
"""
count(最大時間, 時間の間隔)
例:
count(10)なら1秒間隔で通知を10秒まで行う
count(10, 2)なら2秒間隔で通知をを10秒まで行う
"""
#最大時間
max_sec = max_time // interval_sec
#割り切れない時間
remainder_sec = max_time % interval_sec
#間隔
sec = interval_sec
for i in range(max_sec):
print("{0}秒sleepを{1}間隔でお知らせ: 残り{2}秒".format(max_time, sec, max_time - (i * sec)))
sleep(interval_sec)
if remainder_sec == 0:
print(f"{max_time}秒経ちました")
else:
print("{0}秒sleepを{1}間隔でお知らせ: 残り{2}秒".format(max_time, sec, max_time - (max_sec * sec)))
sleep(remainder_sec)
print(f"{max_time}秒経ちました")
カウントダウンタイマーのコードの内容について
引数のmax_timeは数えたい時間でinterval_secは通知する時間の間隔を設定します!
例えば、100秒のsleepで10秒ごとに通知したいならcountdown(100, 10)になり、10秒、10秒…、を100秒経つまでお知らせしてくれます!
interval_secはデフォルトで1秒と設定されていますの指定しなければ1秒ごとに通知されます。
countdown(10, 3)のようなinterval_secにmax_timeが割り切れない数字を入れた場合は、3秒、3秒、3秒の処理の後に余った1秒をsleepさせる処理になります。
※注意※少数(float)は未対応
この関数の引数はint(整数)限定です。
[st-pre myclass=”st-terminal” text=”command” fontawesome=”fa-terminal”]
Traceback (most recent call last):
File “c:\Users\~\countdown.py”, line 33, in
count_down(1.1, 1)
File “c:\Users\~\countdown.py”, line 19, in count_down
for i in range(max_sec):
TypeError: ‘float’ object cannot be interpreted as an integer
[/st-pre]
こんな感じで引数に少数を設定するとエラーが起きてしまうので設定しないようにしましょう!
カウントダウンのコード実行例
例えば
あ~スプレッドシートは一度の100回のリクエストごとに100秒待たないといけないのか~
…あれ?あと何秒待てばいいんだっけ?
なんて時にcountdown関数は役立ちます!
こんな感じでfor文の中に11の倍数のループででcountdown関数実行させようとすると
しっかりと10秒ごとにお知らせしてくれていますね!
まとめ:Pythonでカウントダウンタイマーは簡単にできた
Pythonのカウントダウンのコードはネットにあるんですが、欲しい機能がなかったので自分で作ってみました!
すべてのコードを理解しようとするのではなく「なんかよくわかんないけどこれ入れたらこんな動作するな~」くらいの気持ちで取り組んだらコード記述するのが結構楽に思えたのでやっぱ力抜くのって大事だなぁといじくっているとき強く認識しました。
コメント