Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

So sánh độ chính xác: time.clock() vs time.time() trong Python

Lưu ý: time.clock() đã deprecated từ Python 3.3 và xóa bỏ từ Python 3.8. Bài viết này chỉ mang tính tham khảo lịch sử.

Hành vi khác nhau theo Platform

Platformtime.time()time.clock() (Python 2/3.0-3.2)
Unix/LinuxWall-clock (UTC epoch)CPU time của process hiện tại
WindowsWall-clock (UTC epoch)Wall-clock kể từ lần gọi đầu tiên (QueryPerformanceCounter)

Khác biệt chính

  • time.time(): Trả về giây từ epoch UTC. Bị ảnh hưởng nếu người dùng đổi giờ hệ thống (NTP, DST, manual).
  • time.clock():
    • Unix: CPU time (user + system) của process - tốt cho profiling thuật toán.
    • Windows: Wall-clock kể từ lần gọi đầu tiên - tốt cho benchmark elapsed time.
  • Thay đổi giờ hệ thống: Ảnh hưởng time.time(), không ảnh hưởng time.clock() (trên Unix).

Khuyến nghị hiện đại (Python 3.3+)

Mục đíchHàm thay thế
Benchmark elapsed time (wall-clock)time.perf_counter()
CPU time profilingtime.process_time()
Timestamp UTCtime.time()
Benchmark code snippettimeit module

Ví dụ so sánh (Python 2 / 3.0-3.2)

import time

# Wall-clock
t0 = time.time()
time.sleep(1)
t1 = time.time()
print("time.time():", t1 - t0)  # ~1.0 giây

# CPU time (Unix) / Wall-clock since first call (Windows)
t0 = time.clock()
time.sleep(1)
t1 = time.clock()
print("time.clock():", t1 - t0)  # Unix: ~0.0, Windows: ~1.0