Tauko suorittaa pythonissa ajan myötä.sleep ()

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 time

Vaihe 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 milliseconds

Vaihe 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, esimerkiksitime.sleep(0.25).
  • Mieluumminasyncio.sleep()Async -koodin sisällä jaEvent.wait()Kierrepalveluissa nopeaa sammutusta varten.
  • GUI -sovelluksissa aikataulu työskentelee ajastimien kanssa (esimerkiksi Tkinterafter) 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.

Related Posts