Python

Python timeit модул

Python timeit модул

Програмирането не е само изпълнение на задача и получаване на изход, който сме възнамерявали да получим. Също така става въпрос за това колко бързо се изпълнява и изпълнява програма, така че да се постигне желаният резултат. С повечето от езиците за програмиране не е лесно да се направи сравнение колко бързо е стартирала програмата и никога не е лесно да се определи времето на даден код, за да се разбере коя част от нашия код отнема най-много време за изпълнение. Това е проблемът, който се решава от Python timeit модул.

Python timeit модул

Python timeit модул ни позволява да определим времето за изпълнение на парче код, без да вземаме предвид фоновите процеси, които се изпълняват, за да направим код изпълним. Ако се нуждаете от малко точни измервания на ефективността на вашия код timeit е модулът, към който да се насочите.

timeit прост пример

Ще започнем с използването на модула timeit директно от командния ред. Модулът timeit може да се използва директно от CLI, където можем да въведем прост оператор на цикъл и да го измерим с помощта на показаната команда:

$ python --version
$ python -m timeit '"&".join (str (n) за n в обхват (1000)) '
$ python -m timeit '"&".join ([str (n) за n в обхват (1000)]) '
$ python -m timeit '"&".присъединяване (карта (str, диапазон (1000))) '

Ето какво получаваме обратно с тази команда:

Време на изпълнение от CLI с помощта на timeit

В един от по-късните раздели ще научим как можем да управляваме броя на изпълнените цикли, за да намерим оптималния брой за изпълнение на даден израз.

Време на парче код

Ако имате основен скрипт на python, за който искате да измервате времето, модулът timeit е пътят:

време за импортиране
# инсталационният код се изпълнява само веднъж
setup_code = "от математически импорт sqrt"
# основен кодов фрагмент за проверка на производителността
code_to_measure = "'
def пример ():
mylist = []
за x в обхват (100):
mylist.добавяне (sqrt (x))
"
# timeit изявление
печат (timeit.timeit (setup = setup_code,
stmt = code_to_measure,
число = 10000))

Нека видим изхода за тази команда:

Хрониране на цикъл

В този код видяхме и как можем да контролираме броя повторения, които модулът timeit ще изпълни, за да намерим най-доброто време за изпълнение на програмата.

Измерете времето за многоредов код от CLI

Също така можем да измерим времето за код, който обхваща множество редове в интерфейса на интерфейса на Python. Нека да разгледаме примерна програма, за да видим това:

$ python -m timeit -s \
> "linuxhint = " \
> "за n в обхват (1000):" \
> "linuxhint [str (n)] = n"

Ето какво получаваме обратно с тази команда:

Кодиране на многоредов код на CLI

Обикновено се сравняват два блока код

Ако не искате да се забърквате с използването на CLI и просто искате да сравните две програми на Python, за да знаете коя работи по-бързо, има доста прост начин да постигнете това:

време за импортиране
start = timeit.default_timer ()
funcOne ()
печат (timeit.default_timer () - старт)
start = timeit.default_timer ()
funcTwo ()
печат (timeit.default_timer () - старт)

Използвайки функцията default_timer (), стартираме времената отново и отново, за да намерим разлика за същото, когато е било стартирано за последно. Това може да се използва само когато имате добър модулен стил на писане на код, така че всяка петна от код може да бъде измерена поотделно.

Заключение

В този урок изучихме как можем да определим времето за нашия код в Python и да видим тяхната сложност и ефективност във времето и да работим над него, ако кодът е твърде бавен.

Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...