Встречается на собеседованиях • сегодня
Как решить проблему, когда все потоки имеют доступ к глобальной переменной
Используйте механизмы синхронизации, такие как Lock из модуля threading. Это предотвратит состояние гонки, когда несколько потоков одновременно изменяют переменную.
python
from threading import Lock
global_var = 0
lock = Lock()
def increment():
global global_var
with lock:
global_var += 1
threads = []
for _ in range(10):
t = threading.Thread(target=increment)
t.start()
threads.append(t)
for t in threads:
t.join()
print(global_var) # Гарантированно 10
text
Альтернативы:
- `RLock` для рекурсивных блокировок
- `Semaphore` для ограничения доступа
- Используйте `Queue` для потокобезопасного обмена данными
Важно: блокировки могут привести к дедлокам, если неаккуратно использовать. Всегда освобождайте ресурсы (лучше через `with`).
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы