1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Viết mã Python hiệu quả

Connected

Bài tập

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()?

Hướng dẫn

50 XP

Các phương án trả lời