021 Python 3 – Gestione trascorrere del tempo

21 Marzo, 2023 (22:53) | Linux | By: sargonsei

021-Python 3 – Gestione trascorrere del tempo

01) Conoscere data ed ora.
Per conoscere data ed ora, occorre utilizzare dei metodi contenuti nel modulo [time], quindi occorre prima importare il modulo [time], poi lanciare i metodi più opportuni per ottenere il risultato voluto. Per esempio:

>>> import time # Importa il modulo [time]
>>> SECONDI = time.time() # Viene lanciato il metodo [time] del modulo [time] per mettere nella variabile SECONDI data ed ora, in secondi
>>> DATA_ORA = time.ctime(SECONDI) # Viene lanciato il metodo [ctime] del modulo [time] per convertire il contenuto della variabile SECONDI in data ed ora, e metterlo nella variabile DATA_ORA
>>> print("Data ed ora in secondi: ",SECONDI,"; data ed ora in inglese:",DATA_ORA) # Stampa il contenuto delle variabili SECONDI e DATA_ORA
Data ed ora in secondi:  1679414995.1134164 ; data ed ora in inglese: Tue Mar 21 17:09:55 2023
>>> time.localtime(SECONDI) # Viene lanciato il metodo [localtime] del modulo [time] per convertire il contenuto della variabile SECONDI nei singoli elementi temporali (anno, mese, giorno, ore, minuti, secondi, giorno della settimana, giorno dell’anno, ora legale (0=no, 1=si).
time.struct_time(tm_year=2023, tm_mon=3, tm_mday=21, tm_hour=17, tm_min=9, tm_sec=55, tm_wday=1, tm_yday=80, tm_isdst=0)
>>> TEMPO = time.localtime(SECONDI) Converte la variabile  SECONDI nella tupla TEMPO
>>> print(f"Data ed ora in inglese: {DATA_ORA}; dall'inizio dell'anno sono passati {TEMPO[7]} giorni.")
Data ed ora in inglese: Tue Mar 21 17:09:55 2023; dall'inizio dell'anno sono passati 80 giorni.
>>> 

02) Generare un calendario.
Il modulo [calendar] consente di visualizzare calendari. Per esempio: per visualizzare la pagina del calendario relativa ad Agosto 2020, occorre digitare

>>> import calendar                 # Importa il modulo [calendar]
>>> print(calendar.month(2020, 8))  # Mostra la pagina del calendario relativa a Agosto 2020
    August 2020
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

>>>  

mentre, per visualizzare il calendario relativo al mese corrente dell’anno corrente, oppure al mese corrente dell’anno prossimo, dovremmo digitare le istruzioni:

>>> import calendar, time  # Importa i moduli [calendar] e [time]
>>> TEMPO = time.localtime(time.time()) # Crea una tupla contenente la data odierna
>>> print(calendar.month(TEMPO[0], TEMPO[1])) # Visualizza la pagina del calendario Anno e Mese correnti
     March 2023
Mo Tu We Th Fr Sa Su
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

>>> print(calendar.month(TEMPO[0]+1, TEMPO[1])) # Visualizza la pagina del calendario Anno prossimo e Mese corrente
     March 2024
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

>>> 

e, per visualizzare tutto il calendario relativo ad Agosto 2020, occorre digitare

>>> import calendar #               # Importa il modulo [calendar]
>>> print(calendar.prcal(2020))  # Mostra le pagine del calendario Anno 2020
                                  2020

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2                         1
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       2  3  4  5  6  7  8
13 14 15 16 17 18 19      10 11 12 13 14 15 16       9 10 11 12 13 14 15
20 21 22 23 24 25 26      17 18 19 20 21 22 23      16 17 18 19 20 21 22
27 28 29 30 31            24 25 26 27 28 29         23 24 25 26 27 28 29
                                                    30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                   1  2  3       1  2  3  4  5  6  7
 6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14
13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21
20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28
27 28 29 30               25 26 27 28 29 30 31      29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2          1  2  3  4  5  6
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       7  8  9 10 11 12 13
13 14 15 16 17 18 19      10 11 12 13 14 15 16      14 15 16 17 18 19 20
20 21 22 23 24 25 26      17 18 19 20 21 22 23      21 22 23 24 25 26 27
27 28 29 30 31            24 25 26 27 28 29 30      28 29 30
                          31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                         1          1  2  3  4  5  6
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       7  8  9 10 11 12 13
12 13 14 15 16 17 18       9 10 11 12 13 14 15      14 15 16 17 18 19 20
19 20 21 22 23 24 25      16 17 18 19 20 21 22      21 22 23 24 25 26 27
26 27 28 29 30 31         23 24 25 26 27 28 29      28 29 30 31
                          30
None
>>> 

03) Misurare i tempi di esecuzione di una sequenza di comandi.
Il metodo [time] può essere utilizzato come componente di un blocco di istruzioni avente la funzione di calcolare il tempo utilizzato dal computer per eseguire determinate righe di istruzione. Per esempio:

# 
# Misurare il tempo necessario per eseguire un blocco di istruzioni.
import time # Importa il modulo [time]
def istruzioni(FRA,RIP): # Intestazione funzione "istruzioni" con 2 parametri
    VIA = time.time()    # Viene lanciato il metodo [time] del modulo [time] per mettere nella variabile VIA data ed ora, in secondi
    for T in range(RIP): # inizio ciclo
        print(f"{T + 1}) '{FRA}'") # Scrive la frase fa ripetere
    ALT = time.time()    # Viene lanciato il metodo [time] del modulo [time] per mettere nella variabile ALT data ed ora, in secondi
    return(VIA, ALT)

FRASE = input("Scrivere la frase che si intende ripetere. ") # Chiede la digitazione di una frase
RIPETI = int(input("Scrivere il numero di ripetizioni. "))   # Chiedela digitazione di un numero intero
INIZIO, FINE = istruzioni(FRASE, RIPETI) # Chiama la funzione [istruzioni] passando 2 parametri; attende 2 parametri
print(f"Questo computer ha impiegato {FINE - INIZIO} secondi \n per scrivere {RIPETI} volte la frase \n '{FRASE}'.")
# 

04) Generare ritardi.
Il modulo [time] contiene anche il metodo [sleep], utilizzabile per far trascorrere un certo numero di secondi prima di eseguire l’istruzione seguente, generando così un ritardo. Per esempio:

#
# Generare un ritardo.
import time # Importa il modulo TIME
def messaggio_cadenzato(RIP,SEC): # Intestazione funzione "messaggio_cadenzato" con 2 parametri
    print("Compariranno",RIP,"messaggi distanziati di",SEC,"secondi")
    for T in range(RIP): # inizio ciclo
        time.sleep(SEC)  # Il metodo [sleep] del modulo [time] genera un ritardo di SEC secondi
        print(f"Messaggio n.{T+1}.") # Stampa un messaggio
        
messaggio_cadenzato(5,2) # Chiama la funzione [messaggio_cadenzato] passando 2 parametri
#