Lớp Timer và các hàm tiện ích khác trong mô-đun timeit của thư viện chuẩn Python được thiết kế để cung cấp cơ chế đo thời gian thực thi của các đoạn mã Python nhỏ. Mô-đun có giao diện dòng lệnh và các hàm có thể được gọi từ trong chương trình.
Cách dễ nhất để đo thời gian thực thi là sử dụng hàm tiện ích sau:
timeit()
Hàm này trả về đối tượng của lớp Timer. Nó chủ yếu yêu cầu hai tham số.
stmt - chuỗi chứa câu lệnh Python hợp lệ mà thời gian thực thi cần được đo.
setup - chuỗi chứa câu lệnh Python sẽ được thực thi một lần, chủ yếu để khởi tạo các đối tượng hoặc biến nhất định.
Cả hai chuỗi có thể chứa nhiều câu lệnh được phân tách bằng dấu chấm phẩy (;) hoặc dòng mới, và cả hai mặc định là từ khóa pass. Tham số tùy chọn number có thể được cho là số lần thực thi của stmt.
Trong ví dụ sau, thời gian cần thiết để thực hiện một nghìn lần cộng dồn các số trong phạm vi 0-100 được đo.
import timeit
setupcode = "s = 0"
function = '''
for x in range(100):
s = s + x
'''
print(timeit.timeit(setup=setupcode, stmt=function, number=1000))Ở đây một chuỗi chứa vòng lặp for trong đó các số trong phạm vi 0-100 được cộng. Chuỗi này là tham số stmt. Cho phép cộng, việc khởi tạo một biến được thực hiện bằng chuỗi setupcode. Hàm timeit() tính toán thời gian cần thiết tính bằng giây.
Đầu ra
0.03055878530880241
Lớp Timer
Cùng kết quả có thể được đạt được bằng cách trước tạo một đối tượng Timer rồi thực thi phương thức timeit() trên nó.
repeat()
Lớp Timer cũng có phương thức repeat() để gọi timeit() liên tục. Nó trả về danh sách của tất cả các lần gọi.
Một phiên bản hướng đối tượng của mã trên như sau:
import timeit
setupcode = "s = 0"
function = '''
for x in range(100):
s = s + x
'''
t = timeit.Timer(setup=setupcode, stmt=function)
print(t.timeit(number=1000))
print('calling repeat():', t.repeat(3, 1000))Đầu ra
0.019971274194651528 calling repeat(): [0.023369810546474253, 0.020518432391765262, 0.02075439436427058]
Giao diện dòng lệnh
Như đã nhắc trước, mô-đun timeit có giao diện dòng lệnh. Mô-đun bản thân được nhập bằng tùy chọn -m trong dòng lệnh để thực thi script Python. Các tùy chọn dòng lệnh sau định nghĩa các tham số như setup và mã thực thi, tần suất lặp lại, v.v.
| -n N, --number = N | số lần thực thi 'statement' |
| -r N, --repeat = N | số lần lặp lại timer (mặc định 3) |
| -s S, --setup = S | câu lệnh được thực thi một lần ban đầu (mặc định pass) |
| -v, --verbose | in kết quả thời gian thô; lặp lại để có độ chính xác chữ số nhiều hơn |
| -h, --help | in thông điệp sử dụng ngắn và thoát |
Dưới đây là tương đương dòng lệnh của mã ví dụ dùng trước:
C:\Users\acer>python -m timeit -s "s = 0" "for x in range(100): s = s + x" 10000 loops, best of 3: 22.4 usec per loop