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

Как синхронизировать потоки в Python

Для синхронизации потоков в Python используйте модуль threading с примитивами синхронизации:

  1. Lock – базовый мьютекс:
python
import threading
lock = threading.Lock()

def safe_increment():
    with lock:
        # Критическая секция
        global counter
        counter += 1
  1. RLock – реентерабельный лок (позволяет повторно захватывать тот же поток):
python
rlock = threading.RLock()
  1. Semaphore – ограничивает количество потоков в критической секции:
python
sem = threading.Semaphore(3)  # Макс 3 потока
  1. Event – механизм оповещения между потоками:
python
event = threading.Event()
event.wait()  # Блокировка до event.set()
  1. Condition – более сложная синхронизация с wait/notify:
python
cond = threading.Condition()
with cond:
    cond.wait()  # Ожидание notify()

Важно: GIL (Global Interpreter Lock) в CPython не заменяет необходимость синхронизации при работе с общими данными! Для CPU-bound задач лучше использовать multiprocessing.

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

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

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

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