電話time.sleep()Pythonコードを一定数秒間一時停止する最も簡単な方法です。非同期コードの場合は、使用してくださいasyncio.sleep()、そしてスレッドまたはGUIの場合は、非ブロッキング待機を好むため、アプリは応答性が高い。
ステップ1:時間モジュールをインポートします。
import timeステップ2:呼び出しで実行を一時停止しますtime.sleep(seconds)。
print("Starting...")
time.sleep(2) # sleep for 2 seconds
print("Done.")ステップ3:フロートを渡して、1秒後の遅延のために睡眠をとります。
time.sleep(0.1) # 100 millisecondsステップ4:ループ内のスリープを挿入して、ポーリングやAPI呼び出しなどのリミット作業を評価します。
for _ in range(5):
print("Tick")
time.sleep(1)ステップ5:電話を避けてくださいtime.sleep()GUIのメインスレッドまたは非同期イベントループ内。凍結を防ぐために、以下のオプションを使用してください。
オプション2:Async機能でasyncio.sleep()を使用します
ステップ1:待っている非同期関数を定義しますasyncio.sleep()ブロックする代わりに。
import asyncio
async def work():
print("Hello ...")
await asyncio.sleep(1)
print("... world!")ステップ2:でコルーチンを実行しますasyncio.run()したがって、イベントループは待っている間、応答性の高いままです。
asyncio.run(work())ステップ3:より良いスループットのために同時に待つために複数のタスクをスケジュールします。
import asyncio
async def step(name, delay):
await asyncio.sleep(delay)
print(f"{name} done")
async def main():
t1 = asyncio.create_task(step("A", 1))
t2 = asyncio.create_task(step("B", 2))
t3 = asyncio.create_task(step("C", 3))
await t1
await t2
await t3
asyncio.run(main())オプション3:レスポンシブスレッドの遅延にevent.wait()を使用します
スレッドを使用すると、イベントを待つことですぐにシャットダウンし、ブロッキングスリープが終了するのを待たないようにします。ドキュメントのイベントオブジェクトを参照してください。
ステップ1:aを作成しますthreading.Event()そのワーカースレッドはタイムアウトで待つことができます。
提案された読み:
import threading
import time
stop = threading.Event()ステップ2:各労働者で、交換しますtime.sleep()とstop.wait(timeout)したがって、スレッドは、信号が発生するとすぐに終了できます。
def worker():
while not stop.is_set():
print("working...")
# Wait up to 1s, but return early if stop is set
stop.wait(1)ステップ3:ワーカースレッドを起動し、イベントを設定してきれいに停止します。
t = threading.Thread(target=worker, name="worker-1")
t.start()
time.sleep(3)
stop.set()
t.join()オプション4:UIをフリーズすることなく、Tkinterでの遅延をスケジュールする
tkinterでは、ウィジェットを使用しますafter(ms, callback)イベントループをブロックせずに後でコードを実行する方法。メソッドはTKINTERドキュメントにリストされています。
ステップ1:ルートウィンドウと必要なUIを作成します。
import tkinter as tk
root = tk.Tk()
root.geometry("300x150")ステップ2:でコールバックをスケジュールしますroot.after(delay_ms, func)使用する代わりにtime.sleep()。
def delayed():
print("Ran after 2 seconds")
root.after(2000, delayed)ステップ3:UIが待っている間、UIがインタラクティブに保つようにイベントループを開始します。
root.mainloop()簡単なヒント
time.sleep()現在のスレッドのみをブロックします。他のスレッドは実行され続けます。- たとえば、分数秒間フロートを使用します
time.sleep(0.25)。 - 好む
asyncio.sleep()内部の非同期コードとEvent.wait()速いシャットダウンのためのスレッドサービスで。 - GUIアプリでは、タイマーを使用して作業をスケジュールします(たとえば、tkinter
after)凍結した窓を防ぐため。
ランタイムに一致するスリーププリミティブを選択します:同期、非同期、スレッドベース、またはGUI。応答性を維持する必要があるアプリの部分をブロックせずに、必要な遅延が発生します。














