🔥 Как ускорить Python-код в 10 раз?
Сегодня покажу вам мощный инструмент для оптимизации кода - Numba. Это библиотека, которая позволяет компилировать Python-функции в машинный код, используя JIT-компилятор.
🚀 Как это работает?
Numba использует LLVM для компиляции кода во время выполнения, превращая Python в код, близкий по скорости к C.
Пример
Допустим, у нас есть функция, вычисляющая сумму квадратов чисел:
Теперь ускорим её с помощью Numba:
📊 Результат:
✅ Код на чистом Python выполняется ~5-10 раз медленнее, чем с Numba.
✅ Numba особенно полезна для математических вычислений и обработки массивов.
✅ Простая аннотация @jit(nopython=True) уже даёт мощный прирост скорости!
Где применять?
✔ Численные расчёты
✔ Обработку данных
✔ Алгоритмы машинного обучения
Попробуйте Numba и напишите в комментариях, удалось ли вам ускорить свой код!
📲 Мы в MAX
👉@BookPython
Сегодня покажу вам мощный инструмент для оптимизации кода - Numba. Это библиотека, которая позволяет компилировать Python-функции в машинный код, используя JIT-компилятор.
🚀 Как это работает?
Numba использует LLVM для компиляции кода во время выполнения, превращая Python в код, близкий по скорости к C.
Пример
Допустим, у нас есть функция, вычисляющая сумму квадратов чисел:
import numpy as np
import time
def sum_of_squares(n):
result = 0
for i in range(n):
result += i ** 2
return result
n = 10**7
start = time.time()
sum_of_squares(n)
print("Обычный Python:", time.time() - start)
Теперь ускорим её с помощью Numba:
from numba import jit
@jit(nopython=True)
def sum_of_squares_numba(n):
result = 0
for i in range(n):
result += i ** 2
return result
start = time.time()
sum_of_squares_numba(n)
print("С Numba:", time.time() - start)
📊 Результат:
✅ Код на чистом Python выполняется ~5-10 раз медленнее, чем с Numba.
✅ Numba особенно полезна для математических вычислений и обработки массивов.
✅ Простая аннотация @jit(nopython=True) уже даёт мощный прирост скорости!
Где применять?
✔ Численные расчёты
✔ Обработку данных
✔ Алгоритмы машинного обучения
Попробуйте Numba и напишите в комментариях, удалось ли вам ускорить свой код!
📲 Мы в MAX
👉@BookPython
❤1
🚀 5 крутых Python-фишек, о которых знают не все
Python — мощный и удобный язык, но даже опытные разработчики иногда не знают всех его возможностей. Сегодня я покажу пять полезных трюков, которые могут упростить вашу работу.
1. Используем
Многие не знают, что в Python циклы
✅ Пример:
🔹 Если в списке нет чётных чисел, сработает
2. "Распаковка" переменных
В Python можно присваивать сразу несколько значений одной строкой.
✅ Пример:
Можно менять местами значения без временной переменной:
3. Используем
Чтобы числа легче читались, можно разделять разряды
✅ Пример:
Это просто синтаксический сахар, Python игнорирует
4. Получаем значение из словаря с запасным вариантом
Вместо
✅ Пример:
5. "Распаковка" списка в аргументы функции
Оператор
✅ Пример:
То же работает со словарями через
Эти фишки делают код лаконичнее и понятнее.
📲 Мы в MAX
👉@BookPython
Python — мощный и удобный язык, но даже опытные разработчики иногда не знают всех его возможностей. Сегодня я покажу пять полезных трюков, которые могут упростить вашу работу.
1. Используем
else в for и while Многие не знают, что в Python циклы
for и while могут иметь блок else. Он выполняется, если цикл не был прерван через break. ✅ Пример:
numbers = [1, 3, 5, 7]
for num in numbers:
if num % 2 == 0:
print("Есть чётное число!")
break
else:
print("Чётных чисел нет.")
🔹 Если в списке нет чётных чисел, сработает
else.2. "Распаковка" переменных
В Python можно присваивать сразу несколько значений одной строкой.
✅ Пример:
a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3
Можно менять местами значения без временной переменной:
x, y = 5, 10
x, y = y, x
print(x, y) # 10 5
3. Используем
_ в больших числах Чтобы числа легче читались, можно разделять разряды
_. ✅ Пример:
big_number = 1_000_000_000
print(big_number) # 1000000000
Это просто синтаксический сахар, Python игнорирует
_ при вычислениях.4. Получаем значение из словаря с запасным вариантом
Вместо
if key in dict можно использовать .get(), чтобы избежать KeyError. ✅ Пример:
user_data = {"name": "Alice"}
age = user_data.get("age", 18) # Если ключа "age" нет, вернётся 18
print(age) # 18
5. "Распаковка" списка в аргументы функции
Оператор
* позволяет передавать элементы списка в функцию как отдельные аргументы. ✅ Пример:
def greet(name, age):
print(f"Привет, {name}! Тебе {age} лет.")
user_info = ["Иван", 25]
greet(*user_info) # Привет, Иван! Тебе 25 лет.
То же работает со словарями через
**:
user_dict = {"name": "Ольга", "age": 30}
greet(**user_dict)
Эти фишки делают код лаконичнее и понятнее.
📲 Мы в MAX
👉@BookPython
👍4🔥2