Общая ли память у потоков в Python

Python Middle Т-Банк
Общая ли память у потоков в Python
Ответы
В Python потоки (threads) работают в рамках одного процесса и имеют общую память. Это означает, что все потоки могут обращаться к одним и тем же глобальным переменным и изменять их. Однако из-за GIL (Global Interpreter Lock) только один поток может выполнять 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 ``` Для безопасного доступа к общей памяти используйте механизмы синхронизации: ``` lock = threading.Lock() def safe_increment(): global counter for _ in range(100000): with lock: counter += 1 ```