Sobes.tech
Back to questions
Junior — Middle
78

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

Companies where asked
Фабрика РешенияФабрика Решения

Answer from AI

sobes.tech AI

В Python параллельная обработка с использованием потоков обычно реализуется через модуль threading и concurrent.futures.ThreadPoolExecutor.

  • threading позволяет создавать и управлять потоками вручную, но требует заботы о синхронизации и управлении состоянием.
  • concurrent.futures.ThreadPoolExecutor предоставляет более удобный интерфейс для запуска задач в пуле потоков, упрощая параллелизм.

Важно помнить, что из-за GIL (Global Interpreter Lock) в CPython потоки эффективны для задач, связанных с вводом-выводом (I/O), но не для CPU-интенсивных задач.

Пример с ThreadPoolExecutor:

from concurrent.futures import ThreadPoolExecutor
import time

def task(n):
    print(f"Задача {n} начала работу")
    time.sleep(1)
    print(f"Задача {n} завершена")

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

Этот код запускает 5 задач параллельно с максимум 3 потоками.