Trăn vòng lặp hẹn giờ

Thật tốt khi biết mã bạn viết hiệu quả hay nhanh. Chúng ta có thể kiểm tra điều đó bằng cách kiểm tra xem mất bao lâu để thực hiện các lệnh hoặc chức năng nhất định

Tính toán thời gian thực hiện với mô-đun “thời gian”

Một cách để có được thời gian thực hiện là sử dụng mô-đun thời gian tích hợp và thời gian chức năng của nó. thời gian

Giả sử chúng ta muốn tính toán thời gian thực hiện tạo danh sách với vòng lặp for

my_list = []
for i in range[1000000]:
     my_list.append[i]

và so sánh điều đó với việc tạo một danh sách trong một dòng bằng tính năng Hiểu danh sách. Bây giờ bạn có thể đã nghe nhiều lần rằng vòng lặp for thường chậm hơn. Hãy để chúng tôi kiểm tra điều đó bằng cách tính toán thời gian thực hiện

Thời gian thực hiện “vòng lặp for”

Trước tiên chúng ta hãy nhập mô-đun thời gian

>import time

Hãy để chúng tôi sử dụng thời gian. time để lấy thời gian bắt đầu và sau đó tạo danh sách với vòng lặp for

# get starting time
>start = time.time[]
# initialize empty list
>my_list=c[]
# populate the list with for loop
>for i in range[1000000]:
     my_list.append[i]
# get time taken to run the for loop code 
>elapsed_time_fl = [time.time[] - start] 
0.144280910492

Thời gian thực hiện để "hiểu danh sách"

Hãy để chúng tôi tính toán thời gian thực hiện để tạo danh sách với khả năng hiểu danh sách

>start = time.time[]
>my_list = [i for i in range[1000000]]
# get time taken to run list comprehension
>elapsed_time_lc=[time.time[]-start]
>0.0875291824341

Chúng tôi thấy rằng để tạo cùng một số phần tử, vòng lặp for mất “14 giây”, trong khi việc hiểu danh sách chỉ mất khoảng “9 giây”. Rõ ràng là vòng lặp for chậm hơn nhiều so với việc hiểu danh sách

Tính toán thời gian thực thi với Jupyter Magic Functions %time và %timeit

Một tùy chọn khác để tính toán thời gian thực thi cho mã của bạn là sử dụng các hàm ma thuật của Jupyter %time và
%timeit. Một trong những lợi thế khi sử dụng các chức năng kỳ diệu này là chúng tôi không phải tải bất kỳ mô-đun nào. Chúng ta có thể sử dụng chúng ngay lập tức. Hàm ma thuật %time chạy câu lệnh một lần và nhận tổng thời gian thực hiện.

>%%time
>my_list=c[]
>for i in range[1000000]:
     my_list.append[i]
CPU times: user 143 ms, sys: 8.74 ms, total: 151 ms
Wall time: 151 ms

Lưu ý rằng nó đưa ra tổng thời gian bao gồm cả thời gian hệ thống

>%%time
>my_list=[i for i in range[1000000]]
CPU times: user 86.4 ms, sys: 8.71 ms, total: 95.1 ms
Wall time: 94.2 ms

Hàm ma thuật %timeit chạy một câu lệnh nhiều lần và nhận được thời gian thực hiện tốt nhất. Đối với mã chạy chậm hơn, %timeit có thể điều chỉnh số lần nó nhận được thời gian thực thi

>%%timeit
>my_list=c[]
>for i in range[1000000]:
     my_list.append[i]
10 loops, best of 3: 103 ms per loop

Lưu ý rằng nó tính toán thời gian thực hiện 10 lần và báo cáo thời gian trung bình cho 3 lần chạy hàng đầu

>import time
0
>import time
1

Để kết luận, chúng ta đã thấy rằng vòng lặp for chậm hơn khả năng hiểu danh sách khi số lượng phần tử thực sự cao. Chúng có thể hoạt động rất giống nhau đối với một danh sách nhỏ hơn, vậy tại sao không thử nghiệm nó bằng cách yêu thích của bạn để kiểm tra thời gian thực hiện

Số giây đã trôi qua trong phút này được tính từ date_time[-2. ]. Lấy 60 trừ đi giá trị này sẽ cho khoảng thời gian tính bằng giây mà vòng lặp sẽ ở chế độ ngủ, để thực thi khi phút tiếp theo bắt đầu

Khi vòng lặp đã ngủ trong số giây cần thiết, chúng tôi tra cứu lại ngày giờ và in nó ra

3 – Trình lập lịch tác vụ
Hai tùy chọn trước phù hợp để thực hiện vòng lặp một vài lần, trong trường hợp của chúng tôi là mười lần. Nếu chúng tôi muốn thực thi tập lệnh python liên tục mà không hết hạn, chúng tôi có thể sử dụng các ví dụ trên với vòng lặp nối thêm vô hạn.
Tuy nhiên, nếu một vòng lặp bị lỗi, tập lệnh sẽ dừng. Do đó, chúng tôi muốn thực thi toàn bộ tập lệnh Python mỗi phút một lần bằng trình kích hoạt bên ngoài. Đây là nơi chúng ta có thể sử dụng Trình lập lịch tác vụ.

Trình lập lịch tác vụ có thể thực thi tập lệnh python từ nguồn nhưng sử dụng tệp bó thường dễ dàng hơn. Tệp bó bao gồm vị trí của ứng dụng python [python. exe] và vị trí của tập lệnh python [. py]. Để biết thêm chi tiết về cách sử dụng Trình lập lịch tác vụ và tệp bó để chạy tập lệnh Python, vui lòng xem bài đăng datatofish sau – https. // dữ liệu cá. com/python-script-windows-scheduler

Tệp bó của chúng tôi là

Để minh họa Trình lập lịch tác vụ, tôi sẽ chạy đoạn mã Python sau mỗi phút.
Mã này sử dụng Pandas để tạo tệp CSV trống, nhưng tên của tệp CSV là ngày giờ chạy tập lệnh.

Các ảnh chụp màn hình sau đây hiển thị các trình kích hoạt và hành động được sử dụng

Điều này tạo ra các tệp CSV sau, chúng ta có thể thấy rằng các tệp mất 1 – 4 giây để tạo

Tóm lại, chúng ta đã thấy ba cách khác nhau để trì hoãn vòng lặp Python, hai cách sử dụng vòng lặp bên trong Python và một cách sử dụng Trình lập lịch tác vụ. Tất cả đều có thể được sử dụng tùy thuộc vào loại trì hoãn nào là tốt nhất

Chủ Đề