Как работает асинхронность при использовании потоков

Python Middle Без компании
Как работает асинхронность при использовании потоков
Ответы
В Python потоки (threading) реализуют асинхронность через переключение между потоками, но из-за GIL (Global Interpreter Lock) только один поток выполняет Python-код одновременно. Это делает потоки эффективными для I/O-bound задач, но не для CPU-bound. Пример с потоками: ``` import threading import time def task(name): print(f"Task {name} started") time.sleep(2) # Имитация I/O операции print(f"Task {name} finished") threads = [] for i in range(3): t = threading.Thread(target=task, args=(i,)) t.start() threads.append(t) for t in threads: t.join() ``` Ключевые моменты: - Потоки выполняются параллельно, но GIL ограничивает параллельное выполнение Python-кода - Подходят для операций, где есть ожидание (сеть, файлы, sleep) - Общая память между потоками требует синхронизации (Lock, RLock) - Переключение между потоками происходит автоматически планировщиком ОС