Çalışma süresi için kod profilleme

Verimli Python Kodu Yazmak

Logan Thomas

Scientific Software Technical Trainer, Enthought

Kod profilleme

  • Fonksiyon çağrılarının sıklık ve sürelerine dair ayrıntılı istatistikler
  • Satır satır analizler
  • Kullanılan paket: line_profiler
pip install line_profiler
Verimli Python Kodu Yazmak

Kod profilleme: çalışma süresi

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

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

wts = np.array([ 95.0, 101.0,  74.0])
Verimli Python Kodu Yazmak
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)}
Verimli Python Kodu Yazmak

Kod profilleme: çalışma süresi

%timeit convert_units(heroes, hts, wts)
3 µs ± 32 ns döngü başına (7 çalıştırmanın ort ± std. sapması, her biri 100000 döngü)
Verimli Python Kodu Yazmak
%timeit new_hts = [ht * 0.39370  for ht in hts]
1.09 µs ± 11 ns döngü başına (7 çalıştırmanın ort ± std. sapması, her biri 1000000 döngü)
%timeit new_wts = [wt * 2.20462  for wt in wts]
1.08 µs ± 6.42 ns döngü başına (7 çalıştırmanın ort ± std. sapması, her biri 1000000 döngü)
%%timeit
hero_data = {}
for i,hero in enumerate(heroes):
    hero_data[hero] = (new_hts[i], new_wts[i])
634 ns ± 9.29 ns döngü başına (7 çalıştırmanın ort ± std. sapması, her biri 1000000 döngü)
Verimli Python Kodu Yazmak

Kod profilleme: line_profiler

line_profiler paketi kullanımı

%load_ext line_profiler

Satır bazlı süreler için sihirli komut

%lprun -f
Verimli Python Kodu Yazmak

Kod profilleme: line_profiler

line_profiler paketi kullanımı

%load_ext line_profiler

Satır bazlı süreler için sihirli komut

%lprun -f convert_units
Verimli Python Kodu Yazmak

Kod profilleme: line_profiler

line_profiler paketi kullanımı

%load_ext line_profiler

Satır bazlı süreler için sihirli komut

%lprun -f convert_units convert_units(heroes, hts, wts)
Verimli Python Kodu Yazmak

%lprun çıktısı

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

alt=”Çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı”

Verimli Python Kodu Yazmak

%lprun çıktısı

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

alt=”Satır # ve Hits sütunları vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı”

Verimli Python Kodu Yazmak

%lprun çıktısı

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

alt=”Time sütunu vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı”

Verimli Python Kodu Yazmak

%lprun çıktısı

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

alt=”İlk satırdaki Time birimi vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı”

Verimli Python Kodu Yazmak

%lprun çıktısı

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

alt=”Üçüncü satır vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı”

Verimli Python Kodu Yazmak

%lprun çıktısı

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

alt=”Per Hit sütunu vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı”

Verimli Python Kodu Yazmak

%lprun çıktısı

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

Satır dokuz vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı

Verimli Python Kodu Yazmak

%lprun çıktısı

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

alt=”% Time sütunu vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı”

Verimli Python Kodu Yazmak

%lprun çıktısı

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

alt=”Line Contents sütunu vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı”

Verimli Python Kodu Yazmak
%timeit convert_units convert_units(heroes, hts, wts)
3 µs ± 32 ns döngü başına (7 çalıştırmanın ort ± std. sapması, her biri 100000 döngü)
%lprun -f convert_units convert_units(heroes, hts, wts)

alt="İkinci satırdaki Total time vurgulanmış çalışma zamanı profilleme istatistiklerini özetleyen lprun sihirli komutunun tablo çıktısı"

Verimli Python Kodu Yazmak

Yeni profilleme becerilerinizi uygulayalım!

Verimli Python Kodu Yazmak

Preparing Video For Download...