Page cover

sleep()


sleep(secs) 將執行中的 thread 暫停給定的秒數 secs。通常用於模擬延遲、建立暫停或間隔 requests。 secs 可以是 float 以指示更精確的睡眠時間。

sleep() 函數會 blocks (阻塞) 程式碼的執行,這意味著在睡眠期間不會運行其他程式碼。

這可能不適合程序需要響應使用者的輸入或其他即時事件的情況。 如果您需要 non-blocking 延遲功能,可能需要 threading 或 asyncio...。

sleep() 不適合在 GUI 應用程序中使用它,因為它會使 GUI 無響應。

在這種情況下,請使用計時器事件或單獨的 threads 來處理計時。

在 Windows 8.1 及更高版本上,sleep() 使用高解析度計時器,提供 100 奈秒 (nanoseconds) 的解析度。

範例


有時,API 在一定時間內可以發送的 requests 數量有限制。在這種情況下,您可能需要等待才能發出另一個請求,以避免達到速率限制。

PYTHON
import requests
import time

for i in range(10):
    response = requests.get('http://example.com')
    print(response.status_code)

    time.sleep(1)  # Wait for 1 second before the next request

執行結果:

範例 – 倒數計時器


範例 – 測量函數的性能


測量函數的性能 – Pythonic


測量函數的性能 – 遞迴 ver.


_is_recursive_call 預設為 False,因此對於頂層調用 (直接進行的調用),將設置開始和結束時間並打印執行時間。 對於遞迴調用,_is_recursive_call=True,因此不會設置開始和結束時間,也不會打印執行時間。

範例 – debugging


詳見: functools【可調用物件】

執行結果:

參考資料


time — Time access and conversions — Python 3.11.4 documentation

「耗時測試」python time包中的time()和process_time()如何選擇? - 資訊咖

Python 中的定時器函式 | D棧 - Delft Stack

Python 實現計時器(不同方式)_一顆小樹x - MdEditor

Python time 時間模組使用教學與範例 - Office 指南

Last updated

Was this helpful?