Встречается на собеседованиях • сегодня
Как в мультипотоке работает обращение к памяти
В Python из-за GIL (Global Interpreter Lock) потоки выполняются поочередно, но память у них общая. Каждый поток имеет доступ к одним и тем же объектам в памяти, что требует синхронизации при изменении общих данных.
Пример с синхронизацией:
python
import threading
shared_data = 0
lock = threading.Lock()
def increment():
global shared_data
for _ in range(100000):
with lock: # Блокировка доступа
shared_data += 1
threads = [threading.Thread(target=increment) for _ in range(5)]
for t in threads:
t.start()
for t in threads:
t.join()
print(shared_data) # Без lock результат может быть меньше 500000
text
**Нюансы:**
- GIL не мешает чтению, но требует синхронизации при записи.
- Используйте `threading.Lock` или `queue.Queue` для потокобезопасности.
- Для CPU-задач лучше `multiprocessing`, так как процессы имеют отдельную память.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы