Home [Python] Pythonでsleepする方法
Post
Cancel

[Python] Pythonでsleepする方法

[Python] Pythonでsleepする方法


Pythonでプログラムの実行を一時停止したり遅延させたい場合、timeモジュールのsleep関数を使用できます。この記事では、Pythonでsleepを使用する様々な方法を学びます。

基本的な使用方法

Pythonでsleepを使用するには、timeモジュールをインポートしてtime.sleep()関数を呼び出します。

1
2
3
4
5
import time

print("開始")
time.sleep(2)  # 2秒待機
print("2秒後")

time.sleep()は秒単位の数値を引数として受け取ります。上記の例では、2で2秒間待機します。

様々な時間単位

Pythonのtime.sleep()は秒単位のみをサポートしますが、計算を通じて他の時間単位を変換できます:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import time

print("開始")

# ミリ秒単位(0.5秒 = 500ミリ秒)
time.sleep(0.5)
print("500ミリ秒後")

# 秒単位
time.sleep(2)
print("2秒後")

# 分単位(60秒 = 1分)
time.sleep(60)
print("1分後")

# 時間単位(3600秒 = 1時間)
time.sleep(3600)
print("1時間後")

時間単位の変換

単位秒への変換
ミリ秒1ms = 0.001秒time.sleep(0.5) (500ms)
1s = 1秒time.sleep(2) (2秒)
1m = 60秒time.sleep(60) (1分)
時間1h = 3600秒time.sleep(3600) (1時間)

実用的な例

1. 繰り返し作業の間に待機

1
2
3
4
5
6
7
import time

for i in range(1, 6):
    print(f"作業 {i} 実行中...")
    time.sleep(1)  # 1秒待機

print("すべての作業完了")

2. API呼び出し間の遅延

1
2
3
4
5
6
7
8
9
10
import time

def call_api():
    print("API呼び出し中...")
    # API呼び出しロジック

for i in range(3):
    call_api()
    # API呼び出し間に2秒待機(レート制限)
    time.sleep(2)

3. スレッドと一緒に使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import time
import threading

def worker(worker_id):
    for i in range(3):
        print(f"Worker {worker_id}: 作業 {i}")
        time.sleep(1)

# 複数のスレッドを実行
thread1 = threading.Thread(target=worker, args=(1,))
thread2 = threading.Thread(target=worker, args=(2,))

thread1.start()
thread2.start()

# メインスレッドが終了しないように待機
thread1.join()
thread2.join()
print("すべての作業完了")

4. 非同期プログラミングと一緒に使用(asyncio)

1
2
3
4
5
6
7
8
9
import asyncio

async def main():
    print("開始")
    await asyncio.sleep(2)  # 非同期sleep
    print("2秒後")

# Python 3.7+
asyncio.run(main())

注意事項

  • time.sleep()は現在のスレッドをブロックします。他のスレッドは引き続き実行されます。
  • 正確な時間を保証しません。システムスケジューラによって実際の待機時間が若干異なる場合があります。
  • 非常に短い時間(ナノ秒単位)のsleepは精度が低下する可能性があります。
  • 非同期プログラミングではasyncio.sleep()を使用する必要があります。time.sleep()はイベントループをブロックします。

time.sleep() vs asyncio.sleep()

time.sleep() - 同期ブロッキング

1
2
3
4
5
import time

print("開始")
time.sleep(2)  # ブロッキング
print("2秒後")

asyncio.sleep() - 非同期ノンブロッキング

1
2
3
4
5
6
7
8
import asyncio

async def main():
    print("開始")
    await asyncio.sleep(2)  # ノンブロッキング
    print("2秒後")

asyncio.run(main())

非同期プログラミングでは、asyncio.sleep()を使用すると他のコルーチンが実行できるため、より効率的です。

実用的なヒント

1. ミリ秒単位でsleep

1
2
3
4
import time

# 500ミリ秒待機
time.sleep(0.5)

2. 変数を使用した動的sleep

1
2
3
4
import time

delay = 2.5  # 秒単位
time.sleep(delay)

3. ランダム遅延(レート制限)

1
2
3
4
5
6
import time
import random

# 1秒から3秒の間のランダムな時間待機
delay = random.uniform(1, 3)
time.sleep(delay)

この記事がPythonでsleepを使用する方法を理解するのに役立つことを願っています!

This post is licensed under CC BY 4.0 by the author.

[Go] Golangでsleepする方法

[JavaScript] JavaScriptでsleepする方法