Soittaminentime.sleep()on nopein tapa keskeyttää Python -koodi asetettuun määrään sekuntia. Asynkroniseen koodiin käytäasyncio.sleep(), ja säikeiden tai GUI: n kannalta mieluummin estämättömät odotukset niin, että sovelluksesi pysyy reagoivana.
Vaihtoehto 1: Käytä aikaa.sleep () synkronisessa koodissa
Vaihe 1:Tuo aikamoduuli.
import timeVaihe 2:Taukojen suorittaminen soittamallatime.sleep(seconds).
print("Starting...")
time.sleep(2) # sleep for 2 seconds
print("Done.")Vaihe 3:Siirrä kelluva nukkumaan sekunnin viiveitä varten.
time.sleep(0.1) # 100 millisecondsVaihe 4:Aseta nukkuminen silmukoiden sisäpuolelle, jotta voit korottaa työtä, kuten kysely tai sovellusliittymät.
for _ in range(5):
print("Tick")
time.sleep(1)Vaihe 5:Vältä soittamistatime.sleep()GUI: n päälankaan tai Async -tapahtuman silmukan sisällä; Käytä alla olevia vaihtoehtoja jäädyttämisen estämiseksi.
Vaihtoehto 2: Käytä asyncio.sleep () async -toimintoissa
Vaihe 1:Määritä ASYNC -funktio, joka odottaaasyncio.sleep()estämisen sijasta.
import asyncio
async def work():
print("Hello ...")
await asyncio.sleep(1)
print("... world!")Vaihe 2:Ajaaasyncio.run()Joten tapahtuman silmukka pysyy reagoivana odottaessaan.
asyncio.run(work())Vaihe 3:Aikatauluta useita tehtäviä odottaaksesi samanaikaisesti parempaa suorituskykyä.
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())Vaihtoehto 3: Käytä tapahtuma.Wait () reagoiviin säikeisiin viivästyksiin
Ketjujen avulla tapahtuman odottaminen tekee välittömästä sammutuksesta ja välttää estääkseen estävän unen loppuun. Katso tapahtumaobjektit dokumentaatiossa.
Vaihe 1:Luo athreading.Event()Työntekijän säikeet voivat odottaa aikakatkaisua.
Ehdotettu lukeminen:Käytä tätä temppua keskeyttääksesi Windows -päivitykset pysyvästi
import threading
import time
stop = threading.Event()Vaihe 2:Vaihda jokaisessa työntekijässätime.sleep()kanssastop.wait(timeout)Joten lanka voi poistua heti, kun se on signaloitu.
def worker():
while not stop.is_set():
print("working...")
# Wait up to 1s, but return early if stop is set
stop.wait(1)Vaihe 3:Käynnistä työntekijän säie ja aseta tapahtuma pysäyttääksesi sen puhtaasti.
t = threading.Thread(target=worker, name="worker-1")
t.start()
time.sleep(3)
stop.set()
t.join()Vaihtoehto 4: Aikataulun viiveet Tkinterissä jäädyttämättä käyttöliittymää
Käytä tkinterissä widgetiaafter(ms, callback)Menetelmä koodin suorittamiseen myöhemmin estämättä tapahtumasilmukkaa. Menetelmät on lueteltu Tkinter -dokumentaatiossa.
Vaihe 1:Luo juuri -ikkuna ja kaikki tarvitsemasi käyttöliittymä.
import tkinter as tk
root = tk.Tk()
root.geometry("300x150")Vaihe 2:Ajoittaa takaisinsoittoroot.after(delay_ms, func)sen sijaan, että käyttivättime.sleep().
def delayed():
print("Ran after 2 seconds")
root.after(2000, delayed)Vaihe 3:Aloita tapahtuman silmukka, jotta käyttöliittymä pysyy interaktiivisena odottaessaan.
root.mainloop()Pikavinkki
time.sleep()estää vain nykyisen säikeen; Muut kierteet jatkavat juoksua.- Käytä kelluvia murto -sekuntia, esimerkiksi
time.sleep(0.25). - Mieluummin
asyncio.sleep()Async -koodin sisällä jaEvent.wait()Kierrepalveluissa nopeaa sammutusta varten. - GUI -sovelluksissa aikataulu työskentelee ajastimien kanssa (esimerkiksi Tkinter
after) jäädytettyjen ikkunoiden estäminen.
Valitse ajonaikasi unen primitiivi: synkroninen, async, langanpohjainen tai graafinen käyttöliittymä. Saat tarvitsemasi viiveen estämättä sovelluksesi osia, joiden on pysyttävä reagoivana.














