Back to questions
Junior — Middle
82
Какие методы реализованы в Python для выполнения задач параллельно или конкурентно?
Answer from AI
sobes.tech AI
В Python для выполнения задач параллельно или конкурентно используются несколько подходов и библиотек:
-
Модуль
threading— для создания потоков (threads). Подходит для задач с большим количеством ввода-вывода, но из-за GIL не ускоряет CPU-bound задачи. -
Модуль
multiprocessing— для создания процессов. Позволяет обойти GIL и эффективно использовать несколько ядер CPU. -
Модуль
asyncio— для асинхронного программирования с использованием корутин. Хорошо подходит для большого количества операций ввода-вывода. -
Библиотеки высокого уровня:
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.