Come eseguire una funzione Python con timeout

April 5

Il linguaggio Python comprende diversi modi di ritardare l'esecuzione di una funzione. Il metodo di "sonno" nel modulo "tempo" consente di inserire un ritardo prima esecuzione continua. Il modulo "sched" consente di programmare le funzioni da eseguire dopo un certo ritardo, con priorità. L'oggetto "Timer" nel modulo "threading" ritarda l'esecuzione di una funzione in un contesto multi-threaded.

istruzione

time.sleep

1 Importare il modulo "tempo" con il comando "tempo di importazione."

2 Utilizzare la "time.sleep (2)" comando per ritardare l'esecuzione del programma per 2 secondi.

3 Ritardo per brevi periodi di tempo usando numeri decimali. Ad esempio, utilizzare "time.sleep (.005)" per ritardare di 5 millisecondi. Questo ritardo non è affidabile precisa, tuttavia, perché gli altri thread, oltre Python possono essere in esecuzione.

4 Chiamare una funzione subito dopo il comando "time.sleep" per eseguirlo dopo il ritardo.

oggetto di pianificazione

5 Importare il "tempo" e moduli "sched" con il comando "tempo di importazione, sched".

6 Creare un oggetto di pianificazione con un comando come "schedule = sched.scheduler (time.time, time.sleep)." I due argomenti sono una funzione che restituisce l'ora corrente e uno che causa un ritardo. È possibile utilizzare altre funzioni oltre il modulo "tempo" di, per esempio, se si sta creando una simulazione che implementa il proprio tempo variabile.

7 Aggiungere una funzione per lo scheduler con un comando come "schedule.enter (2,1, stampa, '0')." La funzione di "stampa" è pianificata l'esecuzione 2 secondi dopo questo comando viene eseguito, con l'argomento '0.' Il secondo argomento ( '1') è la priorità di questo evento, che sarà pesato contro gli altri eventi nel scheduler.

8 Avviare lo scheduler con il comando "schedule.run ()." Si noti che il ritardo di ogni evento è relativo a quando "entrare" viene chiamato, non quando "run" si chiama.

oggetto Timer

9 Importare il modulo "threading" con il comando "filettatura di importazione."

10 Creare un nuovo oggetto Timer con un comando come "timer = Threading.Timer (5, stampa, '0')." Il formato è lo stesso della funzione di "entrare" nel modulo "sched", ma non ha alcun argomento prioritario.

11 Avviare il timer con il comando "timer.start ()." Il ritardo inizia su questo comando. Altri comandi possono essere eseguiti prima che finisce il timer di attesa.