time.clock_gettime(), clock_getres(), clock_settime(), get_clock_info() în Python

Modulul time Python 3.3+ (variantele _ns: 3.7+; doar Unix)

Acces direct la ceasurile sistemului de operare și informații despre ele.

Sintaxă
time.clock_gettime(time.CLOCK_MONOTONIC)
time.clock_getres(clk_id)
time.clock_settime(clk_id, secunde)
time.get_clock_info(nume)

Ce face time.clock_gettime(), clock_getres(), clock_settime(), get_clock_info()

Pe Unix, clock_gettime(id) citește un anumit ceas al sistemului: CLOCK_REALTIME (ora reală), CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID etc. clock_getres(id) dă rezoluția lui. clock_settime() setează un ceas și necesită drepturi de administrator. Toate au variante _ns.

get_clock_info(nume) descrie ceasurile folosite de time(), monotonic(), perf_counter(), process_time() și thread_time(): implementarea, rezoluția, dacă este monoton și dacă poate fi ajustat.

Parametri

Parametru Descriere
clk_id Identificatorul ceasului (constantele time.CLOCK_*).
nume Pentru get_clock_info: 'time', 'monotonic', 'perf_counter', 'process_time', 'thread_time'.

Ce returnează

Secunde (float), nanosecunde (int) sau un obiect cu informații.

Exemple

Exemplul 1: Ceasurile sistemului

import time
print(time.get_clock_info("perf_counter"))
print(time.get_clock_info("time").adjustable)
print(time.clock_getres(time.CLOCK_REALTIME))
print(time.clock_gettime(time.CLOCK_MONOTONIC), time.clock_gettime_ns(time.CLOCK_MONOTONIC))
try:
    time.clock_settime(time.CLOCK_REALTIME, time.time())
except PermissionError as e:
    print("Eroare:", e)
try:
    time.clock_settime_ns(time.CLOCK_REALTIME, time.time_ns())
except PermissionError as e:
    print("Eroare:", e)

Rezultat posibil (pe macOS, fără drepturi de administrator)

namespace(implementation='mach_absolute_time()', monotonic=True, adjustable=False, resolution=4.166666666666666e-08)
True
1e-06
412893.551274 412893551281000
Eroare: [Errno 1] Operation not permitted
Eroare: [Errno 1] Operation not permitted

Greșeli frecvente

  • Folosești aceste funcții pe Windows: nu există acolo. Pentru cod portabil, rămâi la time.monotonic() și time.perf_counter().

Comenzi înrudite