Python timeit() là một phương thức trong thư viện Python để đo thời gian thực thi của đoạn mã đã cho. Thư viện Python chạy câu lệnh mã 1 triệu lần và cung cấp thời gian tối thiểu lấy từ bộ đoạn mã đã cho. Python timeit() là một phương thức hữu ích giúp kiểm tra hiệu suất của mã
cú pháp
timeit.timeit(stmt, setup,timer, number)Thông số
- stmt. Điều này sẽ lấy mã mà bạn muốn đo thời gian thực hiện. Giá trị mặc định là “vượt qua”
- cài đặt. Điều này sẽ có các chi tiết thiết lập cần được thực hiện trước stmt. Giá trị mặc định là “vượt qua. ”
- hẹn giờ. Điều này sẽ có giá trị bộ đếm thời gian, timeit() đã có giá trị mặc định được đặt và chúng ta có thể bỏ qua nó
- con số. stmt sẽ thực thi theo số được đưa ra ở đây. Giá trị mặc định là 1000000
Để làm việc với timeit(), chúng ta cần import module như hình bên dưới
import timeitVí dụ đầu tiên
Đây là một ví dụ đơn giản về hàm timeit()
Mã Ví dụ 1
# testing timeit() import timeit print(timeit.timeit('output = 10*5'))đầu ra
0.06127880399999999Chúng ta đã thấy một ví dụ đơn giản cung cấp cho chúng ta thời gian thực hiện của câu lệnh mã đơn giản đầu ra = 10*5 và thời gian cần thiết để thực hiện nó là 0. 06127880399999999
Thời gian Nhiều dòng trong mã python
Có hai bạn có thể thực thi nhiều dòng mã trong timeit. timeit(), sử dụng dấu chấm phẩy hoặc bằng cách lưu mã kèm theo dưới dạng chuỗi có ba dấu ngoặc kép
Dưới đây là các ví dụ cho thấy hoạt động của nó
ví dụ 1. Sử dụng dấu chấm phẩy
import timeit print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))đầu ra
The time taken is 0.137031482ví dụ 2. Sử dụng dấu ngoặc kép
import timeit import_module = "import random" testcode = ''' def test(): return random.randint(10, 100) ''' print(timeit.repeat(stmt=testcode, setup=import_module))đầu ra
C:\pythontest>python testtimeit.py The time taken is 0.182619178thời gian – Phương pháp
Đây là 2 phương thức timeit quan trọng
thời gian. default_timer(). Điều này sẽ trả về thời gian mặc định khi thực hiện
thời gian. lặp lại (stmt, thiết lập, hẹn giờ, lặp lại, số). giống như timeit() , nhưng với lặp lại timeit() được gọi là số lần lặp lại được đưa ra
Chương trình Ví dụ 1
________số 8đầu ra
0.46715912400000004ví dụ 2
default_timer() Ví dụ
import timeit 0đầu ra
import timeit 1ví dụ 3. thời gian. nói lại()
import timeit 2đầu ra
import timeit 3thời gian. repeat() hoạt động tương tự như timeit. timeit(), với sự khác biệt duy nhất nó nhận trong đối số lặp lại và trả về thời gian thực hiện ở định dạng mảng với các giá trị theo số lặp lại
Trong Python, bạn có thể viết các đoạn mã khác nhau để thực hiện cùng một tác vụ. Tuy nhiên, việc viết mã hiệu quả, tiêu tốn ít chu kỳ CPU hơn và nhẹ trên bộ nhớ, là rất quan trọng đối với các ứng dụng cấp sản xuất. Mã được viết kém có thể khiến ứng dụng của bạn mất nhiều thời gian hơn để phản hồi đầu vào của người dùng. Có một số cách để đo chất lượng mã, chẳng hạn như tìm độ phức tạp về thời gian thông qua ký hiệu o lớn và tính toán bộ nhớ mà mã chiếm dụng. Một trong những cách để đo chất lượng mã là tính toán thời gian cần thiết để hoàn thành việc thực thi mã. Trong bài viết này, bạn sẽ thấy các cách khác nhau để đo thời gian thực thi của tập lệnh Python
Có ba phương pháp chính để tìm thời gian thực thi của tập lệnh Python
- Sử dụng mô-đun thời gian
- Sử dụng mô-đun timeit
- Sử dụng lệnh %%time (Chỉ trong Jupyter Notebook)
Để kiểm tra ba phương thức này, chúng ta sẽ viết hai hàm tính giai thừa của một số được truyền cho nó dưới dạng tham số
Trong tập lệnh bên dưới, hàm import timeit 49 sử dụng các lệnh gọi đệ quy để tính giai thừa của một số
import timeit 5
Trong tập lệnh tiếp theo của chúng tôi, chúng tôi xác định một hàm khác import timeit 60 sử dụng các phép lặp đơn giản để tính giai thừa của một số được truyền cho nó dưới dạng giá trị tham số
import timeit 4
Chúng ta sẽ sử dụng hai hàm này trong các phần tiếp theo, nơi chúng ta sẽ thực hiện ba phương pháp để tìm thời gian thực hiện. Mặc dù cả hai chức năng đều thực hiện cùng một tác vụ, nhưng bạn sẽ thấy rằng thời gian thực hiện của chúng sẽ khác nhau
Tìm thời gian thực hiện bằng mô-đun thời gian Python
Phương pháp đầu tiên để tìm thời gian thực thi của tập lệnh Python là thông qua phương pháp import timeit 61 của mô-đun thời gian. Về cơ bản, bạn cần gọi phương thức import timeit 61 trước khi mã bắt đầu. Phương thức import timeit 61 của mô-đun thời gian trả về thời gian hệ thống hiện tại. Tiếp theo, bạn gọi lại phương thức import timeit 61 sau khi mã hoàn thành thực thi. Cuối cùng, bạn trừ giá trị thời gian được tính trước khi bắt đầu mã từ giá trị thời gian được tính sau khi mã hoàn thành thực thi. Điều đó đủ đơn giản, phải không?
Đoạn script sau tính toán thời gian thực hiện cho hàm import timeit 49 để tính giai thừa của 2500
import timeit 6
đầu ra
# testing timeit() import timeit print(timeit.timeit('output = 10*5')) 4
GHI CHÚ. Nếu bạn gặp RecursionError. độ sâu đệ quy tối đa vượt quá khi so sánh, bạn có thể cần giảm the2500 xuống một số nhỏ hơn 1020
Đầu ra cho thấy hệ thống lấy 0. 00494 giây để thực thi hàm import timeit 49 tính giai thừa của 2500. Điều đó khá nhanh
Tương tự, tập lệnh sau tính toán thời gian thực hiện của hàm import timeit 60 khi giá trị tham số 2500 được truyền cho nó
# testing timeit() import timeit print(timeit.timeit('output = 10*5')) 7
đầu ra
# testing timeit() import timeit print(timeit.timeit('output = 10*5')) 8
Đầu ra cho thấy rằng import timeit 60 thậm chí còn nhanh hơn, chỉ mất 0. 00194 giây để tìm giai thừa của 2500
Mô-đun thời gian hữu ích khi bạn muốn tính thời gian thực hiện các tập lệnh lớn. Nếu thời gian thực thi của một đoạn mã cụ thể là một phần rất nhỏ của giây, mô-đun thời gian sẽ trả về 0. 0 vì thời gian mà mã cần để hoàn tất quá trình thực thi của nó quá nhỏ để có thể đo được bằng phương pháp import timeit 61
Hãy xem một ví dụ. Thay vì tính giai thừa của 2500, hãy tìm giai thừa của một số nhỏ hơn, 100, bằng cách sử dụng phương pháp import timeit 49. Chạy đoạn script sau
0.06127880399999999 2
đầu ra
0.06127880399999999 3
Đầu ra trả về 0. 0. Mặc dù mã thực sự mất một chút thời gian để thực thi, nhưng hàm import timeit 61 không thể đo được vì sự khác biệt giữa thời gian trước và sau khi thực thi hàm import timeit 49 là quá nhỏ
Tương tự, bạn có thể chạy hàm import timeit 60 để tính giai thừa của 100 và bạn sẽ lại thấy rằng thời gian thực hiện là 0. 0
Khi thời gian thực thi của mã quá nhỏ để có thể đo được, bạn có thể sử dụng mô-đun timeit của Python. thay thế
Nhận miễn phí Bộ công cụ dành cho nhà phát triển Python của chúng tôi
Tôi đã tập hợp Bộ công cụ dành cho nhà phát triển Python với hơn 100 tập lệnh Python dựng sẵn bao gồm cấu trúc dữ liệu, Pandas, NumPy, Seaborn, máy học, xử lý tệp, quét web và nhiều thứ khác - và tôi muốn bạn có bộ công cụ này miễn phí. Nhập địa chỉ email của bạn dưới đây và tôi sẽ gửi một bản sao theo cách của bạn