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

Как защититься от состояния гонки

Для защиты от состояния гонки в Python можно использовать механизмы синхронизации, такие как блокировки (Lock), семафоры (Semaphore) или другие примитивы из модуля threading.

Пример с Lock:

python
from threading import Thread, Lock

counter = 0
lock = Lock()

def increment():
    global counter
    for _ in range(100000):
        with lock:  # Блокировка доступа к общему ресурсу
            counter += 1

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

print(counter) # Гарантированно 1000000

text

**Альтернативы:**  
- Использование `multiprocessing.Lock` для процессов.  
- Применение `Queue` или других потокобезопасных структур.  
- В асинхронном коде — `asyncio.Lock`.  

**Важно:**  
- Минимизируйте время удержания блокировки.  
- Избегайте взаимных блокировок (deadlock).  
- В некоторых случаях лучше использовать `threading.local()` для хранения данных, специфичных для потока.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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