Встречается на собеседованиях • сегодня
Как защититься от состояния гонки
Для защиты от состояния гонки в 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()` для хранения данных, специфичных для потока.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы