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

Решает ли GIL в Python проблему соревнования потоков

GIL (Global Interpreter Lock) в Python предотвращает одновременное выполнение байт-кода несколькими потоками, но не решает все проблемы конкурентности.

Проблемы, которые остаются:

  • Race conditions: если потоки работают с общими данными, возможны конфликты даже с GIL.
  • Deadlocks: взаимные блокировки потоков из-за неправильного порядка захвата ресурсов.

Пример:

python
import threading

counter = 0

def increment():
    global counter
    for _ in range(100000):
        counter += 1  # Неатомарная операция!

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

print(counter)  # Результат может быть меньше 1_000_000!

Решение:
Использовать threading.Lock, multiprocessing или асинхронность (asyncio).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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