Что в Python мешает параллельному выполнению задач в потоках

Python Senior Без компании
Что в Python мешает параллельному выполнению задач в потоках
Ответы
В Python существует **Global Interpreter Lock (GIL)** – механизм, который позволяет выполнять только одному потоку за раз байт-код Python, даже на многоядерных процессорах. Это связано с тем, что управление памятью в CPython не является потокобезопасным. GIL не мешает параллельному выполнению **I/O-bound задач** (например, сетевые запросы), но сильно ограничивает **CPU-bound операции** (вычисления). **Пример:** ``` import threading def count(): n = 0 for _ in range(10_000_000): n += 1 # Запуск в потоках (из-за GIL не ускорится) t1 = threading.Thread(target=count) t2 = threading.Thread(target=count) t1.start(); t2.start() t1.join(); t2.join() # Выполнится медленнее, чем в одном потоке! ``` **Обходные пути:** - Использование **multiprocessing** (отдельные процессы) - Вынос CPU-задач в C-расширения (например, через **Cython**) - Асинхронное программирование (**asyncio** для I/O-bound задач)