Встречается на собеседованиях • сегодня
Как боролся с гонкой данных в Python
Для борьбы с гонкой данных в Python чаще всего используют механизмы синхронизации из модуля threading:
- Lock (блокировки) - базовый примитив:
python
from threading import Lock
lock = Lock()
shared_data = 0
def increment():
global shared_data
with lock:
shared_data += 1- RLock (реентерабельные блокировки) - позволяют одному потоку захватывать блокировку несколько раз.
- Semaphore - ограничивает количество потоков, которые могут получить доступ к ресурсу:
python
from threading import Semaphore
sem = Semaphore(3) # максимум 3 потока одновременно
def access_resource():
with sem:
# работа с ресурсом- Queue - потокобезопасная очередь для обмена данными между потоками.
Для процессов (multiprocessing) аналогичные примитивы есть в модуле multiprocessing.
Важные нюансы:
- Блокировки могут привести к дедлокам
- Чрезмерное использование блокировок снижает производительность
- Для простых операций можно использовать атомарные операции из модуля
threading(например,threading.Event)

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