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()関数の構文
# importing time module
import time
print("Before the sleep statement")
time.sleep(5)
print("After the sleep statement")
上記のコードを実行すると、2番目のプリントが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)
# making delay for 1 second
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()を使用した劇的な印刷
劇的な方法でメッセージを印刷する必要がある場合、次のように行うことができます。
# importing time module
import time
message = "Hi!!! I am trying to create suspense"
for i in message:
# printing each character of the message
print(i)
time.sleep(0.3)
もし上記のコードを実行すると、メッセージの各文字を表示する度に、時間がかかる様子が見られます。これは劇的であるように思えます。
Pythonのスレッドを一時停止する
Pythonのtime sleep()関数は、マルチスレッドにとって非常に重要なメソッドです。以下は、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")