Sobes.tech
Back to questions
Junior — Middle
82

Какие методы реализованы в Python для выполнения задач параллельно или конкурентно?

Answer from AI

sobes.tech AI

В Python для выполнения задач параллельно или конкурентно используются несколько подходов и библиотек:

  1. Модуль threading — для создания потоков (threads). Подходит для задач с большим количеством ввода-вывода, но из-за GIL не ускоряет CPU-bound задачи.

  2. Модуль multiprocessing — для создания процессов. Позволяет обойти GIL и эффективно использовать несколько ядер CPU.

  3. Модуль asyncio — для асинхронного программирования с использованием корутин. Хорошо подходит для большого количества операций ввода-вывода.

  4. Библиотеки высокого уровня:

    • concurrent.futures.ThreadPoolExecutor и ProcessPoolExecutor — удобный интерфейс для запуска задач в потоках или процессах.

Пример использования concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def task(n):
    print(f"Задача {n} выполняется")

with ThreadPoolExecutor(max_workers=3) as executor:
    for i in range(5):
        executor.submit(task, i)

Таким образом, выбор метода зависит от типа задачи: для CPU-bound — multiprocessing, для I/O-bound — threading или asyncio.