Встречается на собеседованиях • сегодня
Как бороться с состоянием гонки (Race condition) в многопоточности
В Python для борьбы с race condition используют механизмы синхронизации:
- Lock (блокировки) - базовый примитив:
python
from threading import Lock
lock = Lock()
shared_var = 0
def increment():
global shared_var
with lock:
shared_var += 1-
RLock (реентерабельные блокировки) - позволяют одному потоку захватывать блокировку несколько раз.
-
Semaphore - ограничивает количество потоков, которые могут получить доступ к ресурсу.
-
Event - механизм для оповещения между потоками.
-
Condition - более сложный механизм для координации потоков.
Для работы с shared данными в multiprocessing лучше использовать:
multiprocessing.Queuemultiprocessing.Value/Arraymultiprocessing.Manager
Важно минимизировать время удержания блокировки и избегать deadlock'ов (взаимных блокировок). В некоторых случаях лучше использовать thread-safe структуры из queue модуля.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы