Back to questions
Junior — Middle
54
Действительно ли в Python невозможно реализовать параллельное выполнение потоков?
Answer from AI
sobes.tech AI
В Python действительно существует ограничение, связанное с глобальной блокировкой интерпретатора (GIL, Global Interpreter Lock), которая не позволяет нескольким потокам одновременно выполнять байт-код Python в одном процессе. Это означает, что многопоточность в Python не обеспечивает настоящего параллелизма на уровне CPU для вычислительно интенсивных задач.
Однако:
- Потоки в Python могут выполняться параллельно при работе с операциями ввода-вывода (например, сетевые запросы, чтение файлов), где поток освобождает GIL во время ожидания.
- Для вычислительно интенсивных задач можно использовать модуль
multiprocessing, который создает отдельные процессы с собственным интерпретатором и памятью, обеспечивая настоящий параллелизм.
Таким образом, параллельное выполнение потоков в Python возможно, но с ограничениями из-за GIL. Для CPU-bound задач лучше использовать процессы.
Пример использования потоков для I/O:
import threading
import time
def io_task():
time.sleep(2) # имитация операции ввода-вывода
print("Задача завершена")
threads = [threading.Thread(target=io_task) for _ in range(5)]
for t in threads:
t.start()
for t in threads:
t.join()
Здесь потоки будут работать параллельно, так как sleep освобождает GIL.