Встречается на собеседованиях • сегодня
Общая ли память у потоков в Python
В Python потоки (threads) работают в рамках одного процесса и имеют общую память. Это означает, что все потоки могут обращаться к одним и тем же глобальным переменным и изменять их. Однако из-за GIL (Global Interpreter Lock) только один поток может выполнять Python-код в любой момент времени, что может привести к проблемам с конкурентным доступом.
Пример:
python
import threading
counter = 0
def increment():
global counter
for _ in range(100000):
counter += 1
threads = []
for _ in range(5):
t = threading.Thread(target=increment)
threads.append(t)
t.start()
for t in threads:
t.join()
print(counter) # Может быть меньше 500000 из-за race conditionДля безопасного доступа к общей памяти используйте механизмы синхронизации:
python
lock = threading.Lock()
def safe_increment():
global counter
for _ in range(100000):
with lock:
counter += 1
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы