Python Timeit() cu Exemple

โšก Rezumat inteligent

Python Timeit() mฤƒsoarฤƒ timpul de execuศ›ie al unui fragment de cod mic rulรขndu-l de mai multe ori ศ™i returnรขnd durata minimฤƒ. Acceptฤƒ metodele timeit, repeat ศ™i default_timer ศ™i funcศ›ioneazฤƒ din scripturi sau din linia de comandฤƒ.

  • โฑ๏ธ Definiศ›ia Timeit: Mฤƒsoarฤƒ timpul de execuศ›ie al unui fragment de cod, returnรขnd valoarea minimฤƒ pe parcursul mai multor execuศ›ii.
  • ๐Ÿงฉ parametri: stmt, configurare, cronometru ศ™i numฤƒr controleazฤƒ ce se executฤƒ ศ™i cรขt de des.
  • ๐Ÿ” Metode: timeit(), repeat() ศ™i default_timer() oferฤƒ diferite opศ›iuni de temporizare.
  • ๐Ÿ’ป Linie de comanda: Ruleazฤƒ comanda python -m timeit cu opศ›iuni precum -n, -r ศ™i -s.
  • โœ… De ce sฤƒ-l foloseศ™ti: Dezactiveazฤƒ colectarea gunoiului ศ™i alege cel mai precis cronometru pentru fiecare sistem de operare.

Python Timeit()

Ce Este Python Timeit()?

Python timeit() este o metodฤƒ รฎn Python bibliotecฤƒ pentru a mฤƒsura timpul de execuศ›ie luat de fragmentul de cod dat. The Python biblioteca ruleazฤƒ instrucศ›iunea de cod de 1 milion de ori ศ™i oferฤƒ timpul minim luat din setul dat de fragmente de cod. Python timeit() este o metodฤƒ utilฤƒ care ajutฤƒ la verificarea performanศ›ei codului.

Sintaxฤƒ

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

parametrii

  • stmt: Acesta va lua codul pentru care doriศ›i sฤƒ mฤƒsuraศ›i timpul de execuศ›ie. Valoarea implicitฤƒ este โ€žpassโ€.
  • configurarea: Aceasta va avea detalii de configurare care trebuie executate รฎnainte de stmt. Valoarea implicitฤƒ este โ€žpassโ€.
  • timer: Aceasta va avea valoarea timer, timeit() are deja o valoare implicitฤƒ setatฤƒ ศ™i o putem ignora.
  • numฤƒr: Stmt-ul se va executa conform numฤƒrului dat aici. Valoarea implicitฤƒ este 1000000.

Pentru a lucra cu timeit(), trebuie sฤƒ importam modulul, aศ™a cum se aratฤƒ mai jos:

import timeit

Primul exemplu

Iatฤƒ un exemplu simplu de funcศ›ie timeit().

Code Exemplu 1

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

ieศ™ire:

0.06127880399999999

Am vฤƒzut un exemplu simplu care ne oferฤƒ timpul de execuศ›ie al instrucศ›iunii de cod simplu de ieศ™ire = 10*5, iar timpul necesar pentru a-l executa este 0.06127880399999999.

Cronometrare Mai multe linii รฎn codul Python

Existฤƒ douฤƒ moduri de a executa mai multe linii de cod รฎn timeit.timeit(): prin separarea liniilor cu punct ศ™i virgulฤƒ sau prin includerea codului ca ศ™ir cu ghilimele triple.

Iatฤƒ exemple care aratฤƒ funcศ›ionarea acestuia.

Exemplul 1: Utilizarea punctului ศ™i virgulฤƒ

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

ieศ™ire:

The time taken is  0.137031482

Exemplul 2: Folosind ghilimele triple

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

ieศ™ire:

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

timeit โ€“ Metode

Iatฤƒ 2 metode importante de timp

timeit.default_timer() : Aceasta va returna ora implicitฤƒ cรขnd este executatฤƒ.

timeit.repeat(stmt, setup, timer, repeat, number) : la fel ca timeit() , dar cu repetare timeit() se numeศ™te de cรขte ori este dat repetiศ›ia.

Exemplul de program 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))

ieศ™ire:

0.46715912400000004

Exemplu 2

default_timer() Exemplu

# 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)

ieศ™ire:

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

Exemplul 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))

ieศ™ire:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() funcศ›ioneazฤƒ similar cu funcศ›ia timeit.timeit(), cu singura diferenศ›ฤƒ pe care o ia รฎn argumentul repetare ศ™i returneazฤƒ timpul de execuศ›ie รฎn format matrice cu valori conform numฤƒrului de repetare.

Executarea funcศ›iei de sincronizare timeit.timeit() รฎn interfaศ›a liniei de comandฤƒ

Sintaxa pentru a vฤƒ executa funcศ›ia รฎn timeit() pe linia de comandฤƒ este urmฤƒtoarea:

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

Parametrii liniei de comandฤƒ:

  • -n N: de cรขte ori doriศ›i sฤƒ se execute codul.
  • -r N: de cรขte ori doriศ›i ca funcศ›ia timeit() sฤƒ se repete
  • -s S: aceasta va avea detalii de configurare care vor fi executate รฎnainte de executarea codului.
  • -t: pentru aceasta, puteศ›i folosi time.time()
  • -c: pentru aceasta, puteศ›i folosi time.clock()
  • -h: pentru ajutor
  • declaraศ›ie de cod: detaliile codului.

Exemplu

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

Un alt mod รฎn care puteศ›i executa รฎn interiorul liniei de comandฤƒ este aศ™a cum se aratฤƒ mai jos:

Exemplu

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

De ce este timeit() cel mai bun mod de a mฤƒsura timpul de execuศ›ie al lui Python cod?

Iatฤƒ cรขteva motive pentru care considerฤƒm cฤƒ timeit() este cea mai bunฤƒ modalitate de a mฤƒsura timpul de execuศ›ie.

  • Ruleazฤƒ instrucศ›iunea de cod de 1 milion de ori, aceasta este valoarea implicitฤƒ ศ™i, din aceasta, vฤƒ va returna timpul minim necesar. De asemenea, puteศ›i creศ™te/scฤƒdea 1 milion setรขnd numฤƒrul argumentului รฎn funcศ›ie de timp ().
  • รŽn timpul executฤƒrii testului, colectarea gunoiului este dezactivatฤƒ de fiecare datฤƒ de funcศ›ia time ().
  • timeit() intern ia timpul exact conform sistemului dvs. de operare utilizat. De exemplu, va folosi time.clock() pentru Windows sistem de operare ศ™i time.time() pentru Mac ศ™i Linux.

รŽntrebฤƒri frecvente

Funcศ›ia timeit.timeit() ruleazฤƒ instrucศ›iunea de un numฤƒr setat de ori ศ™i returneazฤƒ un singur timp total. Funcศ›ia timeit.repeat() ruleazฤƒ รฎntreaga mฤƒsurฤƒtoare de mai multe ori ศ™i returneazฤƒ o listฤƒ de rezultate, permiศ›รขndu-vฤƒ sฤƒ alegeศ›i cele mai bune rezultate.

Funcศ›ia timeit dezactiveazฤƒ colectarea gunoiului รฎn timpul mฤƒsurฤƒrii, astfel รฎncรขt curฤƒศ›area รฎn fundal sฤƒ nu distorsioneze timpul. Acest lucru face ca rezultatele sฤƒ fie mai consistente ศ™i comparabile, concentrรขndu-se exclusiv pe timpul de execuศ›ie al fragmentului testat.

Puteศ›i separa instrucศ›iunile prin punct ศ™i virgulฤƒ รฎn interiorul ศ™irului stmt sau puteศ›i transmite un ศ™ir pe mai multe linii folosind ghilimele triple. Pentru funcศ›ii, definiศ›i-le รฎn setup ศ™i apelaศ›i-le din stmt.

IA poate profila codul, identifica bucle lente sau apeluri costisitoare, sugera alternative vectorizate sau integrate ศ™i poate recomanda structuri de date mai bune, ajutรขnd...ping Dezvoltatorii se concentreazฤƒ pe optimizare acolo unde timeit prezintฤƒ cele mai mari blocaje.

Da. Avรขnd รฎn vedere un fragment de cod ศ™i rezultatele sale timeit, inteligenศ›a artificialฤƒ poate propune rescrieri, cum ar fi รฎnศ›elegerea listelor, expresii generatoare sau funcศ›ii de bibliotecฤƒ, apoi rulaศ›i din nou timeit pentru a confirma cฤƒ รฎmbunฤƒtฤƒศ›irea este realฤƒ.

Rezumaศ›i aceastฤƒ postare cu: