20 простых методов оптимизации кода на Python.
1️⃣ Упаковка переменных
Снижает использование памяти.
import struct
packed_data = struct.pack('ii', 10, 20)
a, b = struct.unpack('ii', packed_data)
2️⃣ Правильный выбор: память vs. хранилище
Операции с памятью выполняются быстрее, чем с диском.
3️⃣ Использование переменных фиксированного размера
Позволяет быстрее обращаться к данным.
4️⃣ Применение вложенных функций
Используются только внутри модуля, в котором определены.
5️⃣ Использование декораторов
Позволяют кэшировать результаты и снижать затраты на вычисления.
from functools import lru_cache
@lru_cache(maxsize=100)
def compute_heavy_function(x):
return x ** x
6️⃣ Применение подходящих библиотек (например, NumPy)
Эти библиотеки ускоряют вычисления.
7️⃣ Оптимизация условных выражений
Например, оператор and
не проверяет вторую часть, если первая уже ложна, что ускоряет выполнение.
8️⃣ Освобождение памяти с помощью del
и gc.collect()
import gc
large_data = [i for i in range(1000000)]del large_data
gc.collect() # запускает сборку мусора
9️⃣ Минимизация сообщений об ошибках
Например
try:
result = 10 / 0
except ZeroDivisionError:
print("Err: Div/0")
🔟 Оптимизация циклов
Используйте векторные операции вместо циклов.
🔗 Подробнее о всех методах можно узнать здесь.
Вот ещё 10 методов оптимизации кода на Python:
1️⃣ Использование генераторов вместо списков
Генераторы экономят память, так как создают элементы по мере необходимости.
gen = (x ** 2 for x in range(1000000))
2️⃣ Сортировка данных один раз
Если вам нужно многократно искать или фильтровать данные, сортировка массива один раз и использование бинарного поиска может существенно ускорить операции.
3️⃣ Использование встроенных функций
Встроенные функции, такие как map()
, filter()
, и reduce()
, могут быть быстрее, чем их аналоги в виде циклов.
result = map(lambda x: x**2, range(10))
4️⃣ Избегание глобальных переменных
Доступ к глобальным переменным медленнее, чем к локальным, поэтому старайтесь их избегать.
5️⃣ Компиляция регулярных выражений
Если вы используете одно и то же регулярное выражение многократно, скомпилируйте его один раз для повышения производительности.
import re
pattern = re.compile(r'\d+')
matches = pattern.findall('123 abc 456 def')
6️⃣ Использование with
для управления ресурсами
Контекстные менеджеры, такие как with
, обеспечивают правильное управление ресурсами, что снижает вероятность утечек памяти.
with open('file.txt', 'r') as f:
data = f.read()
7️⃣ Применение мемоизации
Мемоизация позволяет кэшировать результаты функций, чтобы избежать повторных вычислений.
8️⃣ Использование множественного присваивания
Операция множественного присваивания позволяет уменьшить количество строк кода и повысить его эффективность.
a, b = b, a + b
9️⃣ Обработка исключений в крайних случаях
Обработка исключений — дорогая операция, поэтому следует использовать её только тогда, когда это действительно необходимо.
🔟 Оптимизация работы с большими файлами
Чтение и обработка файлов частями (например, по строкам или блокам) экономит память и ускоряет процесс.
with open('large_file.txt', 'r') as f:
for line in f:
process(line)
Эти методы помогут улучшить производительность и эффективность вашего Python-кода.