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

Какие проблемы могут возникнуть при использовании многопоточности

В Python из-за GIL (Global Interpreter Lock) настоящая многопоточность невозможна - только один поток выполняет байт-код одновременно. Это ограничивает CPU-bound задачи.

Основные проблемы:

  1. Гонка данных (Race Conditions) - когда несколько потоков обращаются к общим данным без синхронизации.
  2. Взаимные блокировки (Deadlocks) - два и более потока бесконечно ждут друг друга.
  3. Инверсия приоритетов - низкоприоритетный поток удерживает ресурс, нужный высокоприоритетному.

Пример гонки данных:

python
import threading

counter = 0

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

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

print(counter)  # Результат меньше 500000 из-за гонки

Решение:

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

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

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

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