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

Являются ли потоки потокобезопасными в Python

В Python потоки не являются полностью потокобезопасными из-за Global Interpreter Lock (GIL). 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(5)]
for t in threads:
    t.start()
for t in threads:
    t.join()

print(counter)  # Может быть меньше 500000

Для потокобезопасности используйте:

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

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

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

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