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à %timeitMộ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à >%%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 time0 >import time1 Để 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ụ 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. 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 |