Какие знаешь способы распараллеливания задач в Python

Python Middle Без компании
Какие знаешь способы распараллеливания задач в Python
Ответы
В Python есть несколько способов распараллеливания: - **Threading** (многопоточность) - подходит для I/O-bound задач. GIL ограничивает выполнение CPU-bound задач. ``` from threading import Thread def task(): print("Working...") threads = [Thread(target=task) for _ in range(5)] for t in threads: t.start() for t in threads: t.join() ``` - **Multiprocessing** - для CPU-bound задач, создает отдельные процессы. ``` from multiprocessing import Process def task(): print("Processing...") processes = [Process(target=task) for _ in range(5)] for p in processes: p.start() for p in processes: p.join() ``` - **Asyncio** - для асинхронного выполнения I/O-bound задач. ``` import asyncio async def task(): print("Async working...") async def main(): await asyncio.gather(*[task() for _ in range(5)]) asyncio.run(main()) ``` - **Concurrent.futures** - высокоуровневый интерфейс. ``` from concurrent.futures import ThreadPoolExecutor with ThreadPoolExecutor() as executor: executor.map(lambda x: x*2, range(5)) ``` - **Celery** - для распределенных задач (через брокеры сообщений). Выбор зависит от типа задачи (CPU/I/O-bound) и требований к производительности.