Pythonでの一時停止の方法
Python sleep(): コードに時間の遅延を追加する方法
time.sleep()を使ったPython sleep()の追加
以下は、time.sleep()
の使用例です。
このコードをコンソールで実行すると、新しいステートメントをREPLに入力する前に遅延が発生するはずです。
注意: Python 3.5では、time.sleep()
の挙動がわずかに変更されました。新しいPythonのsleep()
システムコールは、指定した秒数以上のスリープが一時中断された場合でも、最低限その秒数で処理が続行されます。ただし、シグナル自体が例外を発生させる場合は適用されません。
Pythonのtimeit
モジュールを使用してスリープがどれくらい続くかをテストすることができます:
ここでは、timeit
モジュールを-n
パラメータと共に実行しています。これにより、後続のステートメントを何回実行するかをtimeit
に指示することができます。上記のコードでは、time.sleep(3)
ステートメントが3回実行され、最速の実行時間が3秒であることが分かります。
timeit
がデフォルトで実行する回数は100万回です。したがって、デフォルトの-n
を使用して上記のコードを実行すると、1回あたり3秒かかるため、ターミナルは約34日間ハングすることになります。timeit
モジュールには、ドキュメンテーションで確認できる他のコマンドラインオプションもあります。
では、もう少し実践的なものを作成しましょう。システム管理者は、自分のウェブサイトがダウンしたことを知りたいと考えています。ウェブサイトのステータスコードを定期的にチェックできるようにしたいのですが、リクエストの間に適切なタイムディレイを入れる必要があります。
以下のコードは、指定したURLにリクエストを送信し、ステータスコードを確認する関数です。time.sleep()
を使用してリクエストの間に1秒の遅延を追加します。
この例では、無限ループ内でリクエストを繰り返し、ステータスコードを表示します。time.sleep(1)
の場所に注意してください。これにより、各リクエストの間に1秒の遅延が追加されます。
これで、Pythonのtime.sleep()
を使用してプログラムに時間の遅延を追加する方法を学びました。次は、デコレータ、スレッド、Async IO、GUIといった他の方法でPythonのsleep()
を使用する方法を紹介します。