Krajta

Python timeit modul

Python timeit modul

Programování není jen o splnění úkolu a získání výstupu, který jsme chtěli získat. Jde také o to, jak rychle program běží a běží, aby bylo dosaženo požadovaného výstupu. U většiny programovacích jazyků není snadné porovnat, jak rychle program běžel, a nikdy není snadné načasovat konkrétní část kódu, abychom pochopili, která část našeho kódu trvá jeho spuštění nejvíce. Toto je problém, který řeší Python timeit modul.

Python timeit modul

Krajta timeit modul nám umožňuje načasovat čas provedení části kódu bez zohlednění procesů na pozadí, které jsou spuštěny, aby byl kód spustitelný. Pokud potřebujete mírně přesná měření výkonu kódu timeit je modul, do kterého je třeba jít.

timeit jednoduchý příklad

Začneme tím, že použijeme modul timeit přímo z příkazového řádku. modul timeit lze použít přímo z CLI, kde můžeme zadat jednoduchý příkaz smyčky a načasovat jej pomocí zobrazeného příkazu:

$ python --verze
$ python -m timeit '"&".join (str (n) for n in range (1000)) ''
$ python -m timeit '"&".join ([str (n) for n in range (1000)]) ''
$ python -m timeit '"&".join (map (str, range (1000)))) '

S tímto příkazem se vrátíme:

Čas provedení z CLI pomocí timeit

V jedné z pozdějších částí se naučíme, jak můžeme spravovat počet provedených smyček, abychom našli optimální počet pro provedení daného výrazu.

Načasování části kódu

Pokud máte základní skript v Pythonu, pro který chcete měřit čas, je čas jít pomocí modulu timeit:

importovat čas
# instalační kód se provede pouze jednou
setup_code = "z matematického importu sqrt"
# hlavní fragment kódu pro kontrolu výkonu
code_to_measure = "'
def příklad ():
mylist = []
pro x v rozsahu (100):
můj seznam.připojit (sqrt (x))
„“
# prohlášení timeit
tisk (timeit.timeit (setup = setup_code,
stmt = code_to_measure,
číslo = 10 000))

Podívejme se na výstup tohoto příkazu:

Načasování smyčky

V tomto kódu jsme také viděli, jak můžeme řídit počet opakování, které modul timeit provede, abychom našli nejlepší čas pro provedení programu.

Změřte čas pro víceřádkový kód z CLI

Můžeme také měřit čas pro kód, který se rozprostírá přes více řádků v rozhraní Python CLI. Podívejme se na ukázkový program a podívejte se na toto:

$ python -m timeit -s \
> "linuxhint = " \
> "pro n v rozsahu (1000):" \
> "linuxhint [str (n)] = n"

S tímto příkazem se vrátíme:

Načasování víceřádkového kódu v rozhraní CLI

Obecně se porovnávají dva bloky kódu

Pokud se nechcete dostat do potíží s používáním rozhraní CLI a chcete pouze porovnat dva programy Pythonu, abyste věděli, který z nich běží rychleji, existuje docela jednoduchý způsob, jak toho dosáhnout:

importovat čas
start = timeit.default_timer ()
funcOne ()
tisk (timeit.default_timer () - start)
start = timeit.default_timer ()
funcTwo ()
tisk (timeit.default_timer () - start)

Pomocí funkce default_timer () začneme časy znovu a znovu, abychom našli stejný rozdíl, když byl naposledy spuštěn. To lze použít pouze v případě, že máte dobrý modulární styl psaní kódu, takže každou část kódu lze měřit samostatně.

Závěr

V této lekci jsme studovali, jak můžeme časovat náš kód v Pythonu a vidět jeho časovou složitost a efektivitu a pracovat nad ním, pokud je kód příliš pomalý.

Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z nejpopulárnějších her pro obchodní simulaci. V této hře musíte vytvořit skvělé dopravní podnikání. Začnete však na začátku kolem r...
Hry SuperTuxKart pro Linux
SuperTuxKart pro Linux
SuperTuxKart je skvělý titul navržený tak, aby vám ve vašem systému Linux přinesl zážitek Mario Kart zdarma. Je to docela náročné a zábavné hrát, je n...
Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
The Battle for Wesnoth je jednou z nejpopulárnějších strategických her s otevřeným zdrojovým kódem, které si v tuto chvíli můžete zahrát. Tato hra se ...