Slik kjører du en Python-funksjonen Med Timeout

Python språket inneholder flere måter å forsinke gjennomføring av en funksjon. Den "sleep" metoden i "tid" modulen kan du sette inn en forsinkelse før henrettelsen fortsetter. Den "sched" modulen kan du planlegge funksjoner som skal utføres etter en viss forsinkelse, med prioritering. Den "Timer" objektet i "tråder" modul forsinker en funksjons kjøring på en multi-threaded sammenheng.

Bruksanvisning

time.sleep

1 Importer "tid" modul med kommandoen "import tid."

2 Bruk kommandoen "time.sleep (2)" til å utsette gjennomføringen av programmet i 2 sekunder.

3 Forsinkelse for kortere perioder ved hjelp av desimaltall. Bruk for eksempel "time.sleep (0,005)" å utsette i 5 millisekunder. Denne forsinkelsen er ikke pålitelig presis, men fordi andre tråder foruten Pythons kan kjøre.

4 Ring en funksjon umiddelbart etter "time.sleep" -kommandoen til å kjøre den etter forsinkelsen.

scheduler objekt

5 Importer "tid" og "sched" moduler med kommandoen "import tid, sched."

6 Lag en planlegger objekt med en kommando som "timeplan = sched.scheduler (time.time, time.sleep)." De to argumentene er en funksjon som returnerer gjeldende tid og en som fører til en forsinkelse. Du kan bruke andre funksjoner enn de "time" modulens, for eksempel hvis du lager en simulering som implementerer sin egen tid variabel.

7 Legg til en funksjon på planleggeren med en kommando som "schedule.enter (2,1, print," 0 ")." Den "print" -funksjonen er planlagt å kjøre 2 sekunder etter at denne kommandoen er utført, med argumentet '0.' Det andre argumentet ( "1") er prioritert av denne hendelsen, som vil bli veid mot andre hendelser i planleggeren.

8 Start planleggeren med kommandoen "schedule.run ()." Merk at hver hendelse forsinkelse er i forhold til når "enter" kalles, ikke når "run" kalles.

Timer objekt

9 Importer "tråder" modul med kommandoen "import threading."

10 Opprett en ny Timer objekt med en kommando som "timer = threading.Timer (5, print," 0 ")." Formatet er den samme som den "enter" -funksjonen i "sched" modul, men det har ingen prioritet argument.

11 Start tidtakeren med kommandoen "timer.start ()." Forsinkelsen begynner på denne kommandoen. Andre kommandoer kan utføres før tiden er ferdig venter.