Python sleep関数の使い方!秒・ミリ秒の一時停止や非同期処理

Python sleep関数の使い方!秒・ミリ秒の一時停止や非同期処理

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:1,676

Pythonのtime.sleep関数を使って処理を一時停止(待機)させる方法を初心者向けに解説します。秒単位・ミリ秒(小数)単位の指定方法から、for文やwhile文を使ったループ処理での活用例、APIリクエスト時の待機、さらに非同期処理(asyncio.sleep)との違いまで実務で役立つ使い方を紹介します。

Pythonユーザにお勧めの本 ↗

初心者向け

1週間でPythonの基礎が学べる本

難易度
実用性
読みやすさ

「絶対に挫折させない」という著者の強い意志を感じる、プログラミングの「最初の1冊」としておすすめできる良書です。

人気

スッキリわかるPython入門 第2版 スッキリわかるシリーズ

難易度
実用性
読みやすさ

対話形式でスラスラ読める。複雑な概念もキャラクターが分かりやすく解説してくれます。

独習Python

難易度
実用性
網羅性

言語仕様を深く解説。なんとなく書ける状態から、自信を持って書ける状態へ引き上げてくれます。

Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ

難易度
実用性
読みやすさ

イラスト中心で、プログラミングの楽しさを教えてくれる。ワクワクしながら学べる入門書です。

PythonPython [パイソン]汎用プログラミング言語プログラムの実行中に処理を一定時間だけ一時停止(待機)させたい場合は、標準ライブラリであるtimeモジュールのsleep()関数を使用します。

APIAPI [エーピーアイ]Application Programming Interface。異なるソフトウェア間の接続口を連続で叩く際のレートリミット対策や、定期的に処理を実行するバッチ処理、スクレイピング時のサーバー負荷軽減など、実務でも非常に頻繁に使われる重要な機能です。

本記事では、time.sleepの基本的な使い方から、ミリ秒単位の指定方法、実務での具体的な活用例、そして非同期処理におけるasyncio.sleepとの違いまで詳しく解説します。

Pythonのtime.sleep関数の基本構文

sleep()関数を使うには、まず標準ライブラリのtimeモジュールをインポートします。

構文
import time
time.sleep(秒数)

引数には待機させたい秒数を数値で指定します。この間、time.sleep() を呼び出したスレッドの実行は一時停止(ブロック)されます。 0以上の値を指定できます。負の値を渡すと ValueError が発生します

sleep関数を使った処理の一時停止(待機)方法

整数(秒単位)で待機する基本的な使い方

最も基本的な、整数(秒単位)を指定する例です。

main.py
import time
print("処理を開始します。")
# 3秒間処理を停止する
time.sleep(3)
print("3秒後に処理が再開されました。")

実行結果

実行結果
処理を開始します。
(3秒間待機)
3秒後に処理が再開されました。

小数を指定して短い時間だけ待機する方法

Pythonのtime.sleep()は整数のほかに**浮動小数点数(float)**も受け付けます。 そのため、1秒未満の短い待機時間(ミリ秒など)を設定したい場合は小数を指定します。

main.py
import time
print("スタート")
# 0.5秒(500ミリ秒)待機する
time.sleep(0.5)
print("0.5秒経過しました")
# 1.5秒待機する
time.sleep(1.5)
print("終了")

※ただし、time.sleep() は指定した時間を「最低限の待機時間」として扱うため、OSOS [オーエス]Operating System。基本ソフトウェアのスケジューリングやシステム負荷などによって、実際の待機時間が指定値より長くなる場合があります。数ミリ秒単位の厳密なリアルタイム制御には向いていません。

実務で役立つPython sleep関数の活用例

APIリクエストやスクレイピング時の負荷軽減(待機処理)

外部のAPIを連続で呼び出したり、Webサイトをスクレイピングしたりする場合、サーバーに過剰な負荷をかけないようにリクエストの間にsleepを挟むのがマナーです。APIのレート制限や利用規約を確認したうえで、必要に応じてリクエスト間隔を調整してください。

api_request.py
import time
urls = [
"http://example.com/api/data/1",
"http://example.com/api/data/2",
"http://example.com/api/data/3"
]
for url in urls:
print(f"{url} へリクエストを送信中...")
# 実際のHTTPリクエスト処理(ここでは省略)
# サーバーへの負荷を考慮し、1リクエストごとに2秒待機する
time.sleep(2)
print("すべてのリクエストが完了しました。")

whileループと組み合わせた定期実行・監視スクリプト

while Trueによる無限ループの中にsleep()を入れることで、指定した間隔で繰り返し実行される定期バッチや監視スクリプトを作成できます。

monitor.py
import time
from datetime import datetime
print("監視を開始します。(Ctrl+Cで終了)")
try:
while True:
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{now}] システムの稼働状況を確認中...")
# 次の確認まで60秒待機する
time.sleep(60)
except KeyboardInterrupt:
print("監視を終了します。")

※このプログラムはCtrl+Cを押すまで60秒ごとに現在時刻を表示し続けます。

非同期処理(asyncio)でsleepを使う方法と注意点

time.sleep() は呼び出し元のスレッドをブロックします。asyncio のイベントループ上で実行すると、他のタスクの実行も妨げる可能性があります。

複数の処理を並行して実行する 非同期処理(asyncio) を行うプログラムの中でtime.sleep()を使うと、他の並行処理まで止まってしまうため注意が必要です。

非同期処理の中で待機を行いたい場合は、time.sleep()ではなく、非同期用の asyncio.sleep() を使用します。

asyncio.sleep()関数の使い方とtime.sleepとの違い

async_example.py
import asyncio
import time
async def task(name, delay):
print(f"タスク {name} を開始します。")
# asyncio.sleepを使用(他のタスクの実行をブロックしない)
await asyncio.sleep(delay)
print(f"タスク {name}{delay}秒後に完了しました。")
async def main():
print("非同期処理の開始")
# 複数のタスクを並行して実行
await asyncio.gather(
task("A", 2),
task("B", 1),
task("C", 3)
)
print("すべての非同期処理が完了")
# 非同期プログラムの実行
asyncio.run(main())

実行結果

実行結果
非同期処理の開始
タスク A を開始します。
タスク B を開始します。
タスク C を開始します。
タスク B が 1秒後に完了しました。
タスク A が 2秒後に完了しました。
タスク C が 3秒後に完了しました。
すべての非同期処理が完了

このように、await asyncio.sleep()を使えばスレッド全体を止めず、その関数の処理だけを一時停止して他のタスクに制御を譲ることができます。

まとめ:Pythonのsleep処理をマスターしよう

Pythonの処理停止(sleep)に関する重要なポイントをまとめます。

  • 基本的な待機: time.sleep(秒数) を使う
  • ミリ秒の待機: time.sleep(0.5) のように小数を指定する
  • 主な用途: ループ内の処理間隔の調整、API・スクレイピングのレートリミット対策、定期監視など
  • 注意点: 厳密な時間制御には向かない(OSによってわずかなズレが生じる)
  • 非同期処理: async / await を使う環境では asyncio.sleep() を使用する

用途に合わせて適切なsleep処理を使いこなしましょう。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Pythonユーザにお勧めの本 ↗

初心者向け

1週間でPythonの基礎が学べる本

難易度
実用性
読みやすさ

「絶対に挫折させない」という著者の強い意志を感じる、プログラミングの「最初の1冊」としておすすめできる良書です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top