【実例多数】Pythonのsleep関数の基本や使い方を徹底解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2022年11月)

✔当記事はこのような方に向けて書かれています

「Pythonのsleep関数って何ができるの?」

「Pythonのsleep関数の使い方が知りたい!」

「Pythonのsleep関数はどうやって使うの?」

✔当記事を通じてお伝えすること

  • Pythonのsleep関数について
  • sleep関数の使い方
  • sleep関数での注意点

当記事では、Pythonのsleep関数についての基本だけでなく、実例付きで具体的な使い方までご紹介します。

ぜひ最後までご覧ください。

icon
icon

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

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モジュールに備わっている一時停止のための関数です。

どのプログラムでも使えるわけではありませんが、少なからず活用できる場面はあります。

ぜひここでマスターして、アプリ開発に活かしてください。

タイトルとURLをコピーしました