(最終更新月:2022年11月)
✔当記事はこのような方に向けて書かれています
「Pythonのsleep関数って何ができるの?」
「Pythonのsleep関数の使い方が知りたい!」
「Pythonのsleep関数はどうやって使うの?」
✔当記事を通じてお伝えすること
- Pythonのsleep関数について
- sleep関数の使い方
- sleep関数での注意点
当記事では、Pythonのsleep関数についての基本だけでなく、実例付きで具体的な使い方までご紹介します。
ぜひ最後までご覧ください。
Pythonのsleep関数についての基本事項
こちらでは、PythonのSleep関数についての基本的なことをお伝えしていきます。
sleep関数がどんな場面で使えるのかを理解したうえで、コーディングに臨むのです。
- sleep関数とは?
- sleep関数を使う場面とは?
- sleep関数で知っておくべき注意点
sleep関数とは?
Pythonのsleep関数とは、timeモジュールの関数で、処理を一時停止するものです。
sleepは日本語で睡眠を意味し、プログラムを一時的に眠らせる(停止する)ことを示唆しています。
timeモジュールにあるので以下のように使います。
import time
time.sleep(5)
sleep関数を使う場面とは?
sleep関数を使える場面は以下のようなときです。
- 処理に一定時間を与えたい
- 指定した時間に実行したい
sleep関数を使えば、処理や実行を待たせておくことができます。
sleep関数で知っておくべき注意点
sleep関数で知っておくべき注意点があります。
- 関数の精度
- 例外(エラー)発生時の動作
それぞれ見ていきましょう。
関数の精度はOSタイマーによって異なる
sleep関数は、各OSのタイマーの精度に依存します。
sleep関数の精度が高くても、OSタイマーが正しく時間を計測しなければ、パフォーマンスは低いものとなるのです。
例えば、Windowsのデフォルトでは、タイマー精度は15.625ミリ秒とされています。
そのためそれ以上細かい時間を指定しても、デフォルトのタイマーでは計測できません。
例外(エラー)発生時の動作
Pythonのsleep関数を実行中にエラーが発生すると、関数の実行も停止します。
プログラムのエラーにより、sleep関数を含めた全体が止まってしまうのです。
sleep関数の書き方・使い方
具体的に、Pythonのsleep関数について、書き方や使い方を見ていきます。
知識があるだけでは、コーディングで役に立ちません。
- 基本的な構造
- forループ内で使う
- 指定時刻にアラームを鳴らす
- 何分後(何秒後)かにタイマーを鳴らす
基本的な構造
sleep関数の基本的な構造は、以下の通り。
time.sleep(秒数)
ただしtimeモジュールのインポートも必要です。
例としては以下のように使います。
import time
time.sleep(10)
#10秒間間を開ける
forループ内で使う
sleep関数を使うときに、forループ内で使う方法があります。
複雑な処理などをおこなう際に、間を空けて処理が終わるのを待つためです。
こちらは、1秒ごとに時刻を出力する例になります。
>>> from datetime import datetime
>>> import time
>>> for i in range(10):
... print(datetime.now())
... time.sleep(1)
...
2022-11-19 10:16:19.945991
2022-11-19 10:16:20.947222
2022-11-19 10:16:21.948442
2022-11-19 10:16:22.949640
2022-11-19 10:16:23.950872
2022-11-19 10:16:24.952047
2022-11-19 10:16:25.953248
2022-11-19 10:16:26.953595
2022-11-19 10:16:27.954750
2022-11-19 10:16:28.955877
指定時刻にアラームを鳴らす
sleep関数を使って、時間を指定することもできます。
今の時刻から指定時刻までを計算して、sleep関数に当てはめます。
以下、簡単なアプリで、指定時刻に「Wake Up!!」と出力されるものを作りました。
【wakeup.py】
#!/usr/bin/env python
#coding: utf-8
import time
from datetime import datetime
def set_timer(timer="2022-01-01 00:00:00"):
set_time = datetime.strptime(timer, "%Y-%m-%d %H:%M:%S")
return set_time
if __name__ == '__main__':
your_time = input("時間を指定してください(形式:2022-01-01 00:00:00) → ")
time_set = set_timer(your_time)
now = datetime.now()
time_til = (time_set - now).seconds
print("タイマーをセットしました。")
time.sleep(time_til)
print("Wake up!")
ターミナルで実行すると以下のとおり。
$ python wakeup.py
時間を指定してください(形式:2022-01-01 00:00:00) → 2022-11-19 10:38:00
タイマーをセットしました。
Wake up!
何分後(何秒後)かにタイマーを鳴らす
こちらでは、時刻指定ではなく何分後(何秒後)を指定して、「It’s time!」を表示させます。
【time_to.py】
#!/usr/bin/env python
#coding: utf-8
import time
from datetime import datetime
def set_timer(timer="5s"):
last_letter = timer[-1]
num = int(timer[:-1])
if last_letter=="m":
return num * 60
elif last_letter == "s":
return num
else:
raise ValueError("値が不正です。")
if __name__ == '__main__':
your_time = input("時間を指定してください(5秒→5s|5分→5m): ")
time_til = set_timer(your_time)
print("タイマーをセットしました。")
time.sleep(time_til)
print("It's time!")
実行してみます。
$ python time_to.py
時間を指定してください(5秒→5s|5分→5m): 3s
タイマーをセットしました。
It's time!
$ python time_to.py
時間を指定してください(5秒→5s|5分→5m): 55
Traceback (most recent call last):
File "time_to.py", line 19, in <module>
time_til = set_timer(your_time)
File "time_to.py", line 15, in set_timer
raise ValueError("値が不正です。")
ValueError: 値が不正です。
sleep関数を使ったアプリ開発実例
当ブログでは、PythonやDjangoで作ったアプリをいくつか公開しています。
その中で、sleep関数を使う場面がいくつかありましたのでご紹介。
✔じゃんけんアプリ
コンピューターとの対戦をするとても簡単なゲームアプリ。
コンピューターが考えているようにするため、sleep関数を使ってやり取りに間を作っています。
コンピューターの処理はとても早いので、そのまま値を出力すると機械的に感じます。
sleep関数で間を開けることで、人と対戦しているように演出できるのです。
まとめ:Pythonのsleep関数は意外とできることが多い
当記事の内容をまとめます。
- sleep関数を使うと、処理を一時停止できる
- sleep関数を使えば、タイマーやアラームも作れる
- 処理に間を開けることで、コンピューターとのやりとりに臨場感が持てることもある
sleep関数は、timeモジュールに備わっている一時停止のための関数です。
どのプログラムでも使えるわけではありませんが、少なからず活用できる場面はあります。
ぜひここでマスターして、アプリ開発に活かしてください。