Приходилось ли оптимизировать Python код
Python
Middle
Без компании
Приходилось ли оптимизировать Python код
Ответы
Да, приходилось. Основные методы оптимизации:
- **Профилирование** – сначала находим узкие места через `cProfile` или `line_profiler`:
```
import cProfile
cProfile.run('my_function()')
```
- **Оптимизация структур данных** – замена списков на множества для поиска, кортежи вместо списков, если данные неизменяемы.
- **Использование встроенных функций** – `map()`, `filter()`, генераторы вместо циклов.
- **Кэширование** – через `functools.lru_cache` для рекурсивных функций:
```
from functools import lru_cache
@lru_cache(maxsize=128)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
```
- **Cython/Numba** – для вычислений в числах.
- **Асинхронность** – при I/O-bound задачах.
Главное правило: сначала замеряем, потом оптимизируем, а не наоборот. Часто узкие места оказываются не там, где ожидаешь.