コンテンツにスキップ

Pythonの待機コマンドの使い方

[

Python wait commandを使用したコードに時間の遅延を追加する方法

Pythonは、プログラムを一時停止させるための組み込みサポートを提供しています。timeモジュールには、プログラムの実行を指定した秒数だけ一時停止させるためのsleep()関数があります。

以下は、time.sleep()を使用する方法の例です。

import time
time.sleep(3) # 3秒間待つ

コンソールでこのコードを実行すると、REPLで新しいステートメントを入力する前に遅延が発生するはずです。

注意:Python 3.5では、time.sleep()の動作がわずかに変更されました。新しいPython sleep()システムコールは、指定した秒数だけ最低でもスリープが続くようになります。ただし、スリープがシグナルによって中断された場合にはこの制限は適用されません。ただし、シグナル自体が例外を発生させる場合は適用されません。

スリープの期間をテストするには、Pythonのtimeitモジュールを使用できます。

ターミナルウィンドウ
$ python3 -m timeit -n 3 "import time; time.sleep(3)"
3 loops, best of 5: 3 sec per loop

ここでは、timeitモジュールを-nパラメータとともに実行し、続く文を実行する回数を指定しています。3回実行され、最良の実行時間が3秒であることがわかります。

timeitがコードを実行するデフォルトの回数は100万回です。上記のコードをデフォルトの-nで実行すると、1イテレーションあたり3秒かかるため、ターミナルが約34日間ハングすることになります。timeitモジュールには、その他にもいくつかのコマンドラインオプションがありますので、ドキュメントを参照してください。

より現実的な例を作成しましょう。システム管理者は、自分のウェブサイトがダウンしたかどうかを知りたいと思っています。ウェブサイトのステータスコードを定期的にチェックできるようにしたいのですが、次の呼び出しの間に適切な時間の遅延が必要です。

次のコード例では、time.sleep()を使用して適切な時間の遅延を実装しています。

import time
import requests
def check_website(url):
while True:
response = requests.get(url)
if response.status_code != 200:
print("Website is down. Retrying in 10 seconds...")
time.sleep(10)
else:
print("Website is up!")
break
check_website("https://www.example.com")

このコードでは、指定したURLのウェブサイトのステータスコードを確認し、ステータスコードが200でない場合は10秒間待機し、ステータスコードが200の場合はループを抜けます。

Pythonのtime.sleep()コマンドを使用すると、プログラムに時間の遅延を追加することができます。この機能を使用することで、ファイルのアップロードやダウンロードの待機、グラフィックの読み込みや画面への表示の遅延など、さまざまなシナリオに使用することができます。