Sleep in Python: come mettere in pausa i programmi
In Python, sleep è una funzione che consente di mettere in pausa un programma per un momento e poi farlo proseguire senza variazioni. Con questo semplice comando potete, ad esempio, temporizzare i risultati, visualizzare l’ora, avviare un conto alla rovescia o impostare un allarme nel linguaggio di programmazione web.
- Gestione record DNS
- Amministrazione SSL
- Documentazione API
Che cos’è sleep in Python?
Con sleep in Python, avete la possibilità di mettere in pausa il programma per un certo periodo di tempo e farlo riprendere automaticamente una volta trascorso il periodo di attesa. In questo modo le/gli utenti hanno il tempo di leggere un’istruzione, ad esempio, o di creare il proprio contatore digitale. Il comando sleep può essere utilizzato insieme al modulo time. Sebbene la struttura e l’uso di sleep siano relativamente semplici, in collaborazione con l’istruzione if-else in Python, il ciclo while in Python o il ciclo for in Python, la funzione consente di eseguire processi anche complessi. A parte il ritardo previsto, a differenza di break e continue in Python, sleep non interferisce con il programma.
Sintassi e funzionalità di sleep in Python
La sintassi di sleep in Python è sempre simile a questa:
time.sleep(t)
t indica il tempo di attesa stimato ed è specificato in secondi nella maggior parte dei casi.
La funzione sleep in Python di solito interrompe una sequenza fissa di eventi. Quindi, prima impartite un comando, poi inserite un’interruzione con una finestra temporale specificata tramite sleep e infine date un’istruzione su quale azione deve essere eseguita dopo la pausa.
Per illustrare questo aspetto si può ricorrere a un semplice esempio. In questa struttura, viene emessa una riga. Dopodiché, il programma fa una pausa di cinque secondi e poi emette una seconda riga. Questo è il codice corrispondente:
import time
print("Questa riga verrà emessa immediatamente.")
time.sleep(5)
print("Questa riga verrà emessa cinque secondi dopo.")
In alternativa, assegnate a time.sleep il valore x e create così un tempo di attesa. Per una pausa di un minuto esatto, il codice appropriato è il seguente:
import time
wait_time = 60
time.sleep(wait_time)
Potete inserire il tempo di attesa in millisecondi. A tal fine, vi basterà dividere quanto inserito per 1.000, in questo modo:
import time
print("Questa riga verrà emessa immediatamente.")
time.sleep(500 / 1000)
print("Questa riga verrà emessa cinquecento millisecondi dopo.")
Come creare un orologio digitale con sleep in Python
Utilizzando un ciclo while tradizionale, che viene trattato molto presto nella maggior parte dei tutorial su Python, potete creare un orologio digitale con sleep in Python, utilizzando la funzione in un modo completamente nuovo. A tale scopo, richiedete l’ora corrente che dovrà essere visualizzata nel formato ora, minuti, secondi. Con la funzione sleep impostate un ritardo di un secondo esatto e ordinate al programma di eseguire nuovamente il ciclo. Se lasciate che il ciclo continui senza un orario di fine, potete creare un orologio digitale preciso in pochi passaggi. Questo è il codice appropriato:
import time
while True:
localtime = time.localtime()
result = time.strftime("%I : %M : %S %p", localtime)
print(result)
time.sleep(1)
In questo caso, il risultato sarà l’ora nel formato inglese e si presenterà nel seguente modo:
04 : 16 : 47 PM
04 : 16 : 48 PM
04 : 16 : 49 PM
04 : 16 : 50 PM
04 : 16 : 51 PM
Se non impostate un orario di fine, queste informazioni temporali continuano a scorrere ininterrottamente. Per terminare il ciclo infinito, premete la combinazione di tasti [Ctrl] + [C].
Creare un timer
La funzione sleep in Python è perfetta anche per essere utilizzata come timer. Ad esempio, per impostarne uno di cinque minuti, procedete come segue:
import time
print("Si comincia da qui: %s" % time.ctime())
time.sleep(300)
print("Ora il tempo è scaduto: %s" % time.ctime())
Il risultato corrispondente si presenta come segue:
Si comincia da qui: Wed Dec 14 11:10:14 2022
Ora il tempo è scaduto: Wed Dec 14 11:15:14 2022
Tra i due risultati ottenuti ci sono esattamente 300 secondi, quindi cinque minuti.
Conto alla rovescia con sleep in Python
Potete anche utilizzare la funzione sleep in Python se desiderate contare in maniera decrescente. Nell’esempio seguente, create un conto alla rovescia da 10 a 0. Il principio è simile a quello dell’ultimo esempio, ma questa volta utilizzate un ciclo for.
import time
for i in reversed(range (1, 11)):
print(i)
time.sleep(1)
print("Si comincia!")
Se ora avviate il programma, questo conta i numeri in ordine decrescente, a partire da 10. Grazie a sleep, ogni secondo si scopre un nuovo valore. Se il ciclo è arrivato a 1, al posto dello 0 appare il messaggio “Si comincia!”.
Funzione sleep in Python e multithreading
L’esecuzione di più processi simultanei in Python, cioè il multithreading, è possibile anche con sleep. In questo esempio, con due thread diversi sotto forma di cicli for, vengono richiesti due risultati. Grazie a sleep potete ora controllare quando viene eseguito il comando, dando così un ordine fisso al programma. Funziona così:
import threading
import time
def first():
for i in range(5):
time.sleep(0.5)
print("Questa è la prima funzione")
def second():
for i in range(5):
time.sleep(0.7)
print("Questa è la seconda funzione")
t1 = threading.Thread(target = first)
t2 = threading.Thread(target = second)
t1.start()
t2.start()