Какие риски выполнения задач знаешь

Python Middle Без компании
Какие риски выполнения задач знаешь
Ответы
- **Deadlock** – взаимная блокировка потоков, когда каждый ждёт освобождения ресурса другим. ``` import threading lock1 = threading.Lock() lock2 = threading.Lock() def thread1(): with lock1: with lock2: # Может заблокироваться, если thread2 уже взял lock2 pass ``` - **Race Condition** – недетерминированное поведение из-за порядка выполнения потоков. ``` counter = 0 def increment(): global counter counter += 1 # Не атомарная операция! ``` - **Memory Leaks** – утечки памяти, особенно при циклических ссылках (например, в графах объектов). ``` class Node: def __init__(self): self.parent = None # Циклическая ссылка, если parent ссылается обратно ``` - **Безопасность данных** – SQL-инъекции, XSS (если Python используется в вебе). ``` # Плохо: query = f"SELECT * FROM users WHERE name = '{user_input}'" # Лучше: cursor.execute("SELECT * FROM users WHERE name = %s", (user_input,)) ``` - **Производительность** – например, неоптимальные запросы к БД (N+1 проблема), блокирующие вызовы в асинхронном коде. - **Ошибки окружения** – зависимости, версии Python, переменные окружения. **Способы снижения рисков:** - Использование `threading.Lock`, `asyncio`, `multiprocessing`. - Профилирование (например, `cProfile`). - Статический анализ (`mypy`, `pylint`). - Тестирование (юнит-тесты, нагрузочные тесты).