Как синхронизировать потоки в Python

Python Middle Без компании
Как синхронизировать потоки в Python
Ответы
Для синхронизации потоков в Python используйте модуль `threading` с примитивами синхронизации: - **Lock** – базовый мьютекс: ``` import threading lock = threading.Lock() def safe_increment(): with lock: # Критическая секция global counter counter += 1 ``` - **RLock** – реентерабельный лок (позволяет повторно захватывать тот же поток): ``` rlock = threading.RLock() ``` - **Semaphore** – ограничивает количество потоков в критической секции: ``` sem = threading.Semaphore(3) # Макс 3 потока ``` - **Event** – механизм оповещения между потоками: ``` event = threading.Event() event.wait() # Блокировка до event.set() ``` - **Condition** – более сложная синхронизация с wait/notify: ``` cond = threading.Condition() with cond: cond.wait() # Ожидание notify() ``` Важно: GIL (Global Interpreter Lock) в CPython не заменяет необходимость синхронизации при работе с общими данными! Для CPU-bound задач лучше использовать `multiprocessing`.