Hồ sơ mã cho thời gian chạy

Viết mã Python hiệu quả

Logan Thomas

Scientific Software Technical Trainer, Enthought

Hồ sơ mã

  • Thống kê chi tiết về tần suất và thời lượng gọi hàm
  • Phân tích theo từng dòng
  • Gói dùng: line_profiler
pip install line_profiler
Viết mã Python hiệu quả

Hồ sơ mã: thời gian chạy

heroes = ['Batman', 'Superman', 'Wonder Woman']

hts = np.array([188.0, 191.0, 183.0])

wts = np.array([ 95.0, 101.0,  74.0])
Viết mã Python hiệu quả
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
convert_units(heroes, hts, wts)
{'Batman': (74.0156, 209.4389),
 'Superman': (75.1967, 222.6666),
 'Wonder Woman': (72.0471, 163.1419)}
Viết mã Python hiệu quả

Hồ sơ mã: thời gian chạy

%timeit convert_units(heroes, hts, wts)
3 µs ± 32 ns mỗi vòng (trung bình ± độ lệch chuẩn của 7 lần chạy, 100000 vòng mỗi lần)
Viết mã Python hiệu quả
%timeit new_hts = [ht * 0.39370  for ht in hts]
1.09 µs ± 11 ns mỗi vòng (trung bình ± độ lệch chuẩn của 7 lần chạy, 1000000 vòng mỗi lần)
%timeit new_wts = [wt * 2.20462  for wt in wts]
1.08 µs ± 6.42 ns mỗi vòng (trung bình ± độ lệch chuẩn của 7 lần chạy, 1000000 vòng mỗi lần)
%%timeit
hero_data = {}
for i,hero in enumerate(heroes):
    hero_data[hero] = (new_hts[i], new_wts[i])
634 ns ± 9.29 ns mỗi vòng (trung bình ± độ lệch chuẩn của 7 lần chạy, 1000000 vòng mỗi lần)
Viết mã Python hiệu quả

Hồ sơ mã: line_profiler

Dùng gói line_profiler

%load_ext line_profiler

Lệnh magic đo thời gian theo từng dòng

%lprun -f
Viết mã Python hiệu quả

Hồ sơ mã: line_profiler

Dùng gói line_profiler

%load_ext line_profiler

Lệnh magic đo thời gian theo từng dòng

%lprun -f convert_units
Viết mã Python hiệu quả

Hồ sơ mã: line_profiler

Dùng gói line_profiler

%load_ext line_profiler

Lệnh magic đo thời gian theo từng dòng

%lprun -f convert_units convert_units(heroes, hts, wts)
Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

alt=”Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy”

Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

alt=”Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng cột Line # và Hits”

Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

alt=”Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng cột Time”

Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

alt=”Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng đơn vị Time ở dòng đầu”

Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

alt=”Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng dòng ba”

Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

alt=”Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng cột Per Hit”

Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng dòng chín

Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

alt=”Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng cột % Time”

Viết mã Python hiệu quả

Đầu ra %lprun

%lprun -f convert_units convert_units(heroes, hts, wts)

alt=”Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng cột Line Contents”

Viết mã Python hiệu quả
%timeit convert_units convert_units(heroes, hts, wts)
3 µs ± 32 ns mỗi vòng (trung bình ± độ lệch chuẩn của 7 lần chạy, 100000 vòng mỗi lần)
%lprun -f convert_units convert_units(heroes, hts, wts)

alt="Đầu ra dạng bảng của lệnh magic lprun tóm tắt thống kê hồ sơ thời gian chạy, tô sáng dòng Total time thứ hai"

Viết mã Python hiệu quả

Hãy luyện tập sức mạnh profiling mới của bạn!

Viết mã Python hiệu quả

Preparing Video For Download...