Встречается на собеседованиях • сегодня

Общая ли память у потоков в 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
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы