Python Timeit() con esempi

โšก Riepilogo intelligente

Python La funzione Timeit() misura il tempo di esecuzione di un piccolo frammento di codice eseguendolo piรน volte e restituendo la durata minima. Supporta i metodi timeit, repeat e default_timer e funziona sia da script che da riga di comando.

  • ๏ธ Timeit definito: Misura il tempo di esecuzione di un frammento di codice, restituendo il valore minimo ottenuto da numerose esecuzioni.
  • ๐Ÿงฉ parametri: stmt, setup, timer e number controllano cosa viene eseguito e con quale frequenza.
  • ๐Ÿ” Metodi: Le funzioni timeit(), repeat() e default_timer() offrono diverse opzioni di temporizzazione.
  • ๐Ÿ’ป Riga di comando: Esegui python -m timeit con opzioni come -n, -r e -s.
  • โœ… Perchรฉ usarlo: Disabilita la raccolta dei rifiuti e seleziona il timer piรน preciso per ogni sistema operativo.

Python Timeit()

Cosa รจ Python รˆ ora()?

Python tempo() รจ un metodo in Python libreria per misurare il tempo di esecuzione impiegato dal frammento di codice fornito. IL Python La libreria esegue l'istruzione del codice 1 milione di volte e fornisce il tempo minimo preso dal set specificato di frammenti di codice. Python timeit() รจ un metodo utile che aiuta a verificare le prestazioni del codice.

Sintassi

timeit.timeit(stmt, setup,timer, number)

Scheda Sintetica

  • stmt: Questo prenderร  il codice per il quale vuoi misurare il tempo di esecuzione. Il valore predefinito รจ "superato".
  • setup: Questo conterrร  i dettagli di configurazione che devono essere eseguiti prima di stmt. Il valore predefinito รจ "pass".
  • timer: Questo avrร  il valore del timer, timeit() ha giร  un valore predefinito impostato e possiamo ignorarlo.
  • numero: Lo stmt verrร  eseguito in base al numero fornito qui. Il valore predefinito รจ 1000000.

Per lavorare con timeit(), dobbiamo importare il modulo, come mostrato di seguito:

import timeit

Primo esempio

Ecco un semplice esempio della funzione timeit()

Code esempio 1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

Produzione:

0.06127880399999999

Abbiamo visto un semplice esempio che ci fornisce il tempo di esecuzione dell'output dell'istruzione di codice semplice = 10*5 e il tempo impiegato per eseguirla รจ 0.06127880399999999.

Tempistica Righe multiple nel codice Python

Esistono due modi per eseguire piรน righe di codice in timeit.timeit(): separando le righe con punto e virgola o racchiudendo il codice come stringa tra virgolette triple.

Ecco alcuni esempi che ne mostrano il funzionamento.

Esempio 1: utilizzo del punto e virgola

import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

Produzione:

The time taken is  0.137031482

Esempio 2: utilizzo delle virgolette triple

import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))

Produzione:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit โ€“ Metodi

Ecco 2 importanti metodi timeit

timeit.default_timer() : Ciรฒ restituirร  l'ora predefinita una volta eseguito.

timeit.repeat(stmt, impostazione, timer, ripetizione, numero) : come timeit() , ma con ripetizione timeit() viene chiamato il numero di volte in cui viene fornito ripeti.

Esempio di programma 1

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

Produzione:

0.46715912400000004

esempio 2

default_timer() Esempio

# testing timeit()

import timeit
import random

def test():
    return random.randint(10, 100)

starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

Produzione:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045

Esempio 3: timeit.repeat()

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))

Produzione:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() funziona in modo simile alla funzione timeit.timeit(), con l'unica differenza che prende l'argomento ripetizione e restituisce il tempo di esecuzione in formato array con valori secondo il numero di ripetizione.

Esecuzione della funzione di temporizzazione timeit.timeit() all'interno dell'interfaccia della riga di comando

La sintassi per eseguire la funzione all'interno di timeit() sulla riga di comando รจ la seguente:

python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]

Parametri della riga di comando:

  • -n N: il numero di volte in cui vuoi che il codice venga eseguito.
  • -r N: il numero di volte che vuoi che la funzione timeit() si ripeta
  • -s S: conterrร  i dettagli di configurazione che verranno eseguiti prima dell'esecuzione del codice.
  • -t: per questo puoi usare time.time()
  • -c: per questo puoi utilizzare time.clock()
  • -h: per aiuto
  • istruzione del codice: i dettagli del codice.

Esempio

C:\pythontest>python -m timeit -s 'text="hello world"'
20000000 loops, best of 5: 13.1 nsec per loop

Un altro modo in cui puoi eseguire all'interno della riga di comando รจ come mostrato di seguito:

Esempio

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

Perchรฉ timeit() รจ il modo migliore per misurare il tempo di esecuzione di Python codice?

Ecco alcuni motivi per cui riteniamo che timeit() sia il modo migliore per misurare il tempo di esecuzione.

  • Esegue l'istruzione del codice 1 milione di volte che รจ il valore predefinito e da ciรฒ restituirร  il tempo minimo impiegato. Puoi anche aumentare/diminuire 1 milione impostando il numero dell'argomento nella funzione time ().
  • Durante l'esecuzione del test, la garbage collection viene disabilitata ogni volta tramite la funzione time().
  • timeit() richiede internamente l'ora esatta in base al sistema operativo utilizzato. Ad esempio, utilizzerร  time.clock() per Windows sistema operativo e time.time() per Mac e Linux.

DOMANDE FREQUENTI

La funzione `timeit.timeit()` esegue l'istruzione un numero predefinito di volte e restituisce un singolo tempo totale. La funzione `timeit.repeat()` esegue l'intera misurazione piรน volte e restituisce un elenco di risultati, permettendoti di scegliere il migliore.

timeit disabilita la raccolta dei rifiuti durante la misurazione, in modo che la pulizia in background non alteri i tempi. Ciรฒ rende i risultati piรน coerenti e confrontabili, concentrandosi esclusivamente sul tempo di esecuzione del frammento di codice testato.

รˆ possibile separare le istruzioni con punti e virgola all'interno della stringa stmt, oppure passare una stringa multilinea utilizzando le virgolette triple. Per le funzioni, รจ necessario definirle in setup e richiamarle da stmt.

L'IA puรฒ profilare il codice, identificare cicli lenti o chiamate costose, suggerire alternative vettorializzate o integrate e raccomandare strutture dati migliori, aiutandoping Gli sviluppatori concentrano l'ottimizzazione laddove il tempo mostra i maggiori colli di bottiglia.

Sรฌ. Dato un frammento di codice e i relativi risultati di timeit, l'IA puรฒ proporre delle riscritture, ad esempio utilizzando list comprehension, espressioni generatrici o funzioni di libreria; successivamente, รจ necessario eseguire nuovamente timeit per confermare che il miglioramento sia effettivo.

Riassumi questo post con: