Pythonのtime sleep()関数

みなさん、Pythonの学習が順調であることを願っています。このチュートリアルでは、Pythonのtime sleep()メソッドについて学びます。Pythonのsleep関数は、すでに前に説明したpython timeモジュールに属しています。

Pythonのtime sleep

Pythonのtime sleep関数は、プログラムの実行を遅らせるために使用されます。Pythonのsleep関数を使用して、プログラムの実行を指定した秒数だけ停止することができます。なお、Pythonのtime sleep関数は、実際には現在のスレッドの実行を停止するだけであり、プログラム全体を停止するわけではありません。

Pythonのtime sleep()関数の構文

Pythonのsleep()は、python timeモジュールのメソッドです。そのため、まずtimeモジュールをインポートし、その後でこのメソッドを使用する必要があります。Pythonのsleep()関数の使用方法は次のとおりです:ここで、sleep()メソッドの引数tは秒単位です。つまり、時間.time(t)というステートメントが実行されると、次のコード行はt秒後に実行されます。以下の例を参照してください:

# timeモジュールのインポート
import time

print("Before the sleep statement")
time.sleep(5)
print("After the sleep statement")

上記のコードを実行すると、2番目のprint文が5秒後に実行されることがわかります。したがって、必要に応じてコードに遅延を設定することができます。遅延時間は浮動小数点値でも指定でき、より正確な遅延を実現できます。たとえば、以下のように100ミリ秒(0.1秒)の遅延を作成したい場合は、次のようにします。

import time
time.sleep(0.100)

Pythonのsleepの例

次のPythonのtime sleep関数の例を見てみましょう。

import time
startTime = time.time()
for i in range(0,5):
   print(i)
   # 1秒の遅延を作成する
   time.sleep(1)
endTime = time.time()
elapsedTime = endTime - startTime
print("Elapsed Time = %s" % elapsedTime)

これにより、以下の出力が得られます:

0
1
2
3
4
Elapsed Time = 5.059988975524902

経過時間が5よりも大きいのは、forループの各実行ごとに1秒間処理が停止するためです。余分な時間は、プログラムの実行時間、オペレーティングシステムのスレッドスケジューリングなどに起因しています。

Pythonのsleep()の異なる遅延時間

場合によっては、異なる秒数の遅延が必要な場合があります。以下のように行うことができます:

import time

for i in [ .5, .1, 1, 2]:
   print("Waiting for %s" % i , end='')
   print(" seconds")
   time.sleep(i)

これにより、以下の出力が得られます:

Waiting for 0.5 seconds
Waiting for 0.1 seconds
Waiting for 1 seconds
Waiting for 2 seconds

sleep()を使用した劇的な出力

以下のように、劇的な方法でメッセージを印刷する必要があるかもしれません:

# timeモジュールのインポート
import time
message = "Hi!!! I am trying to create suspense"

for i in message:
   # メッセージの各文字を印刷
   print(i)
   time.sleep(0.3)

上記のコードを実行すると、メッセージの各文字を印刷した後、少し時間がかかるため、劇的に見えます。

Pythonスレッドのスリープ

Pythonのtime.sleep()関数は、マルチスレッドプログラミングにおいて、現在のスレッドの実行を一時停止するための非常に重要なメソッドです。

import time
from threading import Thread


class Worker(Thread):
    def run(self):
        for x in range(0, 11):
            print(x)
            time.sleep(1)


class Waiter(Thread):
    def run(self):
        for x in range(100, 103):
            print(x)
            time.sleep(5)


print("Staring Worker Thread")
Worker().start()
print("Starting Waiter Thread")
Waiter().start()
print("Done")

以下の画像は、上記のPythonスレッドスリープの例によって生成された出力を示しています。 出力からは、Pythonのtime.sleep()関数によってスレッドのみが実行を停止していることが非常に明確にわかります。これがPythonのtime.sleep()関数またはPythonのsleep()関数についてのすべてです。参考: StackOverFlowの投稿, APIドキュメント

Source:
https://www.digitalocean.com/community/tutorials/python-time-sleep