Dùng %lprun: phát hiện điểm nghẽn
Profiling một hàm cho phép bạn đi sâu vào mã nguồn của hàm và có thể phát hiện các điểm nghẽn. Khi thấy một số dòng mã chiếm phần lớn thời gian chạy của hàm, đó là dấu hiệu bạn nên dùng một kỹ thuật khác hiệu quả hơn.
Hãy đào sâu vào hàm convert_units().
def convert_units(heroes, heights, weights):
new_hts = [ht * 0.39370 for ht in heights]
new_wts = [wt * 2.20462 for wt in weights]
hero_data = {}
for i,hero in enumerate(heroes):
hero_data[hero] = (new_hts[i], new_wts[i])
return hero_data
Tải gói line_profiler vào phiên IPython của bạn. Sau đó, dùng %lprun để profile hàm convert_units() khi chạy trên dữ liệu siêu anh hùng của bạn. Nhớ dùng cú pháp đặc biệt khi làm việc với %lprun (bạn sẽ phải cung cấp cờ -f để chỉ định hàm muốn profile).
Hàm convert_units(), danh sách heroes, mảng hts và mảng wts đã được nạp sẵn vào phiên của bạn. Sau khi viết mã xong, hãy trả lời câu hỏi sau:
Bao nhiêu phần trăm thời gian được dùng cho dòng list comprehension new_hts so với tổng thời gian chạy trong hàm convert_units()?
Bài tập này là một phần của khóa học
Viết mã Python hiệu quả
Bài tập tương tác thực hành
Biến lý thuyết thành hành động với một trong các bài tập tương tác của chúng tôi
Bắt đầu bài tập