Ce face time.perf_counter(), monotonic(), process_time(), thread_time()
perf_counter() este ceasul cu cea mai mare rezoluție, potrivit pentru a măsura cât durează o bucată de cod. monotonic() nu poate merge niciodată înapoi, potrivit pentru termene și timeout-uri. Valorile lor absolute nu au sens; contează doar diferența dintre două citiri.
process_time() măsoară doar timpul de procesor folosit de procesul curent (fără pauzele din sleep), iar thread_time() doar al firului curent. Fiecare are o variantă _ns care returnează nanosecunde ca întreg.
Ce returnează
Un float în secunde (variantele _ns: int în nanosecunde).
Exemple
Exemplul 1: Timp real față de timp de procesor
import time
start_real = time.perf_counter()
start_cpu = time.process_time()
start_ns = time.perf_counter_ns()
time.sleep(0.2)
suma = sum(i * i for i in range(2_000_000))
print(f"real: {time.perf_counter() - start_real:.3f} s")
print(f"procesor: {time.process_time() - start_cpu:.3f} s")
print(f"ns: {time.perf_counter_ns() - start_ns}")
print(time.monotonic() > 0, time.monotonic_ns() > 0, time.thread_time() >= 0, time.thread_time_ns() >= 0)
Rezultat posibil (diferă la fiecare rulare)
real: 0.312 s
procesor: 0.109 s
ns: 312409125
True True True True
Greșeli frecvente
- Afișezi direct
perf_counter()crezând că este ora: valoarea are un punct de pornire nedefinit. Folosește doar diferențe.
Comenzi înrudite
time.time() și time.time_ns(): Ora curentă ca timestamp Unix: secunde (sau nanosecunde) de la 1 ianuarie 1970 UTC.time.sleep(): Oprește execuția programului pentru un număr de secunde.time.clock_gettime(), clock_getres(), clock_settime(), get_clock_info(): Acces direct la ceasurile sistemului de operare și informații despre ele.