Sobes.tech
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.