Встречается на собеседованиях • сегодня

Какие знаешь проблемы multithreading

Глобальная блокировка интерпретатора (GIL) в CPython ограничивает выполнение только одного потока за раз, что снижает эффективность CPU-bound задач.

Проблемы:

  1. Race conditions — гонка данных при одновременном доступе к общим ресурсам.
  2. Deadlocks — взаимоблокировка потоков, ожидающих друг друга.
  3. Сложность отладки — недетерминированное поведение из-за переключения потоков.
  4. Накладные расходы — создание потоков требует ресурсов, а GIL мешает распараллеливанию.

Пример race condition:

python
import threading

counter = 0

def increment():
    global counter
    for _ in range(100000):
        counter += 1

threads = [threading.Thread(target=increment) for _ in range(2)]
for t in threads:
    t.start()
for t in threads:
    t.join()

print(counter)  # Может быть меньше 200000 из-за гонки

Решение:

  • Использовать threading.Lock для синхронизации.
  • Для CPU-bound задач — multiprocessing.
  • Для I/O-bound задач — асинхронность (asyncio).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы