Съвети за програмиране

10-те най-добри и полезни съвета за ускоряване на вашия Python код

10-те най-добри и полезни съвета за ускоряване на вашия Python код

Ако някой ви попита - „Кой е най-бързо растящият език за програмиране в света в момента?”Отговорът ще бъде прост. Неговият питон. Световната популярност се дължи на простия синтаксис и богатите библиотеки. В днешно време можете да правите почти всичко с python: Наука за данни, машинно обучение, обработка на сигнали, визуализация на данни - вие го наречете. Много хора обаче твърдят, че python е малко бавен, докато решава сериозни проблеми. Но времето за изпълнение на програма зависи от кода, който се пише. С някои съвети и трикове можете да ускорите кода на Python и да подобрите производителността на програмата.

Съвети и трикове за ускоряване на кода на Python


В случай, че търсите начини за ускоряване на вашия python код, статията е за вас. Тя илюстрира техниките и стратегиите за намаляване на времето за изпълнение на дадена програма. Съветите не само ще ускорят кода, но и ще подобрят питон уменията.

01. Използвайте вградени библиотеки и функции


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

# code1 newlist = [] за дума в oldlist: newlist.добавяне (дума.горен())
# code2 newlist = map (str.горен, стар списък)

Тук вторият код е по-бърз от първия код, тъй като е използвана библиотечната функция map (). Тези функции са удобни за начинаещи. Кой не иска по-бърз, както и чист и по-малък код за писане? Затова използвайте библиотечните функции и модули колкото е възможно повече.

02. Правилна структура на данните на правилното място


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

Python има вградени структури от данни като списък, кортеж, набор и речник. Хората са свикнали да използват списъци. Но има някои случаи, когато кортежът или речникът работят много по-добре от списъците. За да научите повече структури от данни и алгоритми, трябва да преминете през учебните учебници на Python.

03. Try, за да сведете до минимум използването на за Примка


Доста е трудно да се избегне използването на за цикъл. Но винаги, когато получите шанс да го предотвратите, експертите казват, че го правите. For цикълът е динамичен в python. Времетраенето му е повече от известно време. Вложен за цикъл е много по-трудоемък. Два вложени за цикли ще вземат квадрата на времето в един цикъл for.

# code1 за i в big_it: m = re.търсене (r '\ d 2 - \ d 2 - \ d 4', i) ако m:… 
# code2 date_regex = re.компилиране (r '\ d 2 - \ d 2 - \ d 4') за i в big_it: m = date_regex.търсене (i) ако m:… 

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

04. Избягвайте глобалните променливи


Глобалните променливи се използват в python в много случаи. Глобалната ключова дума се използва за нейното деклариране. Но времето на изпълнение на тези променливи е повече от това на локалната променлива. Използването на по-малко от тях спестява от ненужно използване на паметта. Освен това Python извлича локална променлива по-бързо от глобална. Когато се движите по външни променливи, Python е истински муден.

Няколко други програмни езика се противопоставят на непланираното използване на глобални променливи. Броячът се дължи на странични ефекти, водещи до по-голямо време на работа. Така че, опитайте да използвате локална променлива вместо глобална, когато е възможно. Освен това можете да направите локално копие, преди да го използвате в цикъл, спестявайки време.

05. Увеличете използването на разбирането на списъка


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

# код1 квадратни номера = [] за n в диапазон (0,20): ако n% 2 == 1: квадратни_номери.добавяне (n ** 2)
# code2 square_numbers = [n ** 2 за n в обхват (1,20), ако n% 2 == 1]

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

06. Заменете диапазона () с xrange ()


Въпросът за обхвата () и xrange () идва, ако използвате python 2. Тези функции се използват за итерация на всичко в цикъл for. В случай на диапазон (), той записва всички числа в диапазона в паметта. Но xrange () запазва само диапазона от числа, които трябва да бъдат показани.

Типът на връщане на диапазон () е списък, а този на xrange () е обект. В крайна сметка xrange () отнема по-малко памет и в резултат на това по-малко време. Така че, използвайте xrange () вместо range (), когато е възможно. Разбира се, това е приложимо само за потребители на python 2.

07. Използвайте генератори


В python генераторът е функция, която връща итератор при извикване на ключовата дума yield. Генераторите са отличен оптимизатор на паметта. Те връщат по един артикул, вместо да връщат всички наведнъж. Ако вашият списък включва значителен брой данни и трябва да използвате по една информация наведнъж, използвайте генератори.

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

Тъй като генераторите имат достъп и изчисляват стойността при поискване, не е необходимо значителна част от данните да се записват изцяло в паметта. Това води до значително спестяване на памет, в крайна сметка ускорява кода.

08. Обединяване на низове с Join


Обединяването е доста често при работа с низове. Като цяло, в python, ние обединяваме с помощта на „+“. На всяка стъпка обаче операцията „+“ създава нов низ и копира стария материал. Този процес е неефективен и отнема много време. Трябва да използваме join (), за да обединим низове тук, ако искаме да ускорим нашия Python код.

# code1 x = "I" + "am" + "a" + "python" + "geek" print (x)
# code2 x = "".join (["I", "am", "a", "python", "geek"]) print (x)

Ако разгледаме примера, първият код отпечатва „Iamapythongeek”, а вторият код отпечатва „Аз съм python geek”.  Операцията join () е по-ефективна и по-бърза от '+'. Той също така поддържа кода чист. Който не иска по-бърз и чист код? Така че, опитайте да използвате join () вместо '+' за обединяване на низове.

09. Профилирайте кода си


Профилирането е класически начин за оптимизиране на кода. Има много модули за измерване на статистиката на програмата. Те ни карат да знаем къде програмата прекарва твърде много време и какво да направим, за да я оптимизираме. Така че, за да осигурите оптимизация, проведете някои тестове и подобрете програмата, за да подобрите ефективността.

Таймерът е един от профилиращите. Можете да го използвате навсякъде в кода и да намерите времето за изпълнение на всеки етап. Тогава можем да подобрим програмата там, където отнема твърде много време. Освен това има вграден модул за профилиране, наречен LineProfiler. Той също така дава описателен отчет за изразходваното време. Има няколко профила, които можете да научите, като четете книги на python.

10. Бъдете актуализирани - Използвайте най-новата версия на Python


Има хиляди разработчици, които редовно добавят повече функции към python. Модулите и библиотечните функции, които използваме днес, ще бъдат остарели от развитието утре. Разработчиците на Python правят езика по-бърз и по-надежден всеки ден. Всяко ново издание повишава своята производителност.

И така, трябва да актуализираме библиотеките до последната им версия. Python 3.9 е най-новата версия сега. Много библиотеки на python 2 може да не работят на python3. Нека имаме това предвид и винаги използваме най-новата версия, за да постигнем максимална производителност.

И накрая, Insights


Стойността на разработчиците на Python в света се увеличава от ден на ден. И така, какво чакаш! Крайно време е да започнете да се научавате да ускорявате кода на python. Съветите и триковете, които предоставихме, със сигурност ще ви помогнат да пишете ефективни кодове. Ако ги следвате, можем да се надяваме, че можете да подобрите кода си и да преминете към по-усъвършенствани неща за python.

Опитахме се да покажем всички основни трикове и съвети, необходими за ускоряване на кода. Надяваме се, че статията е отговорила на повечето от въпросите ви. Останалото е върху вас. Обаче няма край на знанието и край на ученето. Така че, ако сме пропуснали нещо съществено, уведомете ни. Щастливо учене!

Как да инсталирате и играете Doom на Linux
Въведение в Doom Серията Doom възниква през 90-те години след пускането на оригиналния Doom. Това беше незабавен хит и от този момент нататък серията ...
Vulkan за потребители на Linux
С всяко ново поколение графични карти виждаме, че разработчиците на игри преместват границите на графичната вярност и се приближават една крачка до фо...
OpenTTD срещу Simutrans
Създаването на собствена транспортна симулация може да бъде забавно, релаксиращо и изключително примамливо. Ето защо трябва да сте сигурни, че изпробв...